динамические привязки цвета текста метки javafx - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть метка labelSign, которая показывает знак + ve или -ve.

, и у меня есть другая метка labelValue, и цвет текста метки зависит от текста labelSign.

Этот код в порядке, если есть два вида цветов:

labelValue.textFillProperty().bind(Bindings.when(labelSign.textProperty().isEqualsTo("+ve")).then(Color.GREEN).otherwise(Color.RED));

Как обрабатывать, если есть 3 случая labelSign: +ve,-ve и empty и раскрасить текст labelValue в ЧЕРНЫЙ, если labelSign равен empty?

1 Ответ

2 голосов
/ 22 апреля 2019

Используйте Bindings.createObjectBinding для создания привязки со свойством text в качестве зависимости.

private static Color textToColor(String text) {
    ...
}
labelValue.textFillProperty().bind(Bindings.createObjectBinding(() -> textToColor(labelSign.getText()), labelSign.textProperty());

Это позволяет использовать произвольный алгоритм для определения цветана основе текста.Обновление происходит каждый раз, когда обновляется одна из зависимостей (в этом случае свойство text Label).

С другой стороны, вы можете установить произвольный цвет текста без изменения отображаемого результата, еслитекст пустой (= пустая строка) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...