ColorPicker без цветного квадрата в Javafx? - PullRequest
0 голосов
/ 11 мая 2018

Я хочу реализовать свой собственный ColorPicker SplitMenu, который фактически работает как SplitMenuButton.Для этого у меня есть кнопка, которая при нажатии меняет цвет выделенного текста на текущий цвет, и палитра цветов, которая делает то же самое, но также меняет текущий цвет.Итак, мой FXML выглядит так:

<HBox>
    <Button text="Aa" fx:id="colorTextButton" styleClass="leftButton" onAction="#colorText"/>
    <ColorPicker fx:id="colorPicker" styleClass="rightButton colorPicker" onAction="#setColor">
</HBox>

мой CSS выглядит следующим образом:

.leftButton {
    -fx-background-insets: 0;
    -fx-background-radius: 0.25em 0 0 0.25em;
    -fx-border-style: solid;
    -fx-border-color: #bcbcbc;
    -fx-border-width: 0.08em 0.00em 0.08em 0.08em;
    -fx-border-radius: 0.25em 0 0 0.25em;
}

.rightButton {
    -fx-background-insets: 0;
    -fx-background-radius: 0 0.25em 0.25em 0;
    -fx-border-style: solid;
    -fx-border-color: #bcbcbc;
    -fx-border-width: 0.08em 0.08em 0.08em 0.04em;
    -fx-border-radius: 0 0.25em 0.25em 0;
}

.colorPicker {
    -fx-color-label-visible: false;
}

Есть ли какой-либо способ, программно через Java или CSS или FXML, чтобы избавиться отквадрат цвета в палитре цветов?Довольно просто воссоздать аналогичную клетку в виде графика на другой кнопке, но как мне избавиться от кнопки на палитре цветов?

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете удалить поле предварительного просмотра из ColorPicker, используя CSS ниже:

.color-picker > .color-picker-label > .picker-color > .picker-color-rect {
    -fx-stroke: null;
    -fx-fill : null;   
}

Это приведет к полному исчезновению поля.

Редактировать: Но, как я вижу, окно появится снова, если вы откроете цветовую палитру и продолжите переключаться между цветами, нажимая мышь (влево / вправо), и оно снова исчезнет, ​​когда мышь отпустится.Я посмотрю на него позже или завтра.

Редактировать 2: Еще один хороший способ, который лучше, чем описанный выше, - это скрыть прямоугольник программно, используя код ниже:

Rectangle rec = (Rectangle) colorPicker.lookup("Rectangle");
rec.setVisible(false);
...