visibleProperty.bind用法确认及isEqualTo比较对象疑问
关于JavaFX visibleProperty绑定与isEqualTo方法的问题解答
首先明确告诉你:你写的这段代码用法是完全正确的,而且恰好满足你想要的需求——isEqualTo(anObject)正是在和anotherProperty的当前值做比较,而非anotherProperty这个属性对象本身。
具体解释:
- 在JavaFX中,
anotherProperty这类属性对象(比如ObjectProperty<T>)的isEqualTo()方法,会创建一个BooleanBinding对象。这个绑定会实时监听anotherProperty的数值变化:- 当
anotherProperty的当前值和你传入的anObject相等时,该BooleanBinding返回true - 当数值不相等时,返回
false
- 当
- 你通过
property.visibleProperty().bind(...)把控件的可见性绑定到这个布尔绑定上,就实现了“当anotherProperty的值等于anObject时显示控件,否则隐藏”的逻辑,完全符合你要的“和值比较”的需求。
举个直观的例子:
假设我们有这样的定义:
ObjectProperty<String> statusProperty = new SimpleObjectProperty<>(); Button myButton = new Button("示例按钮"); // 你的绑定代码 myButton.visibleProperty().bind(statusProperty.isEqualTo("active"));
- 当执行
statusProperty.set("active")时,myButton会自动显示 - 当执行
statusProperty.set("inactive")时,myButton会自动隐藏
所以你完全不需要调整代码,当前的写法已经完美实现了你想要的功能~
内容的提问来源于stack exchange,提问作者Ino
相关产品推荐
相关产品推荐

