javafx标签文本颜色动态绑定

时间:2019-04-22 16:55:04

标签: javafx binding

我有一个标签labelSign,上面显示+ ve或-ve符号。

,我还有另一个标签labelValue,标签的文本颜色取决于labelSign的文本。

如果有两种颜色,此代码就可以:

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

如果存在三种情况下的labelSign:+ve-veempty,并且如果labelSign为{{1 }}?

1 个答案:

答案 0 :(得分:2)

使用Bindings.createObjectBinding创建一个具有unsigned int check_bit(unsigned int bit, unsigned int n) { return n >> bit & 1; } 属性作为依赖项的绑定。

text
private static Color textToColor(String text) {
    ...
}

这允许您使用任意算法来根据文本确定颜色。每当依赖项之一(在本例中为labelValue.textFillProperty().bind(Bindings.createObjectBinding(() -> textToColor(labelSign.getText()), labelSign.textProperty()); 的{​​{1}}属性)更新时,都会进行更新。

另一方面,如果文本为空(=空字符串)...,则可以设置任意文本颜色而不会更改显示结果。