请原谅我的问题,如果它看起来很愚蠢,但我很好奇.我正在制作一个Java程序,它将有一个GUI,并对整个属性的想法感到好奇.为什么在我们可以向类添加数据时使用它们?例如:
class myButton extends Button {
private boolean booleanProperty = false;
myButton(args...) {
// Do something with the property
}
public void setProperty(boolean value) {
this.booleanProperty = value;
}
public boolean getProperty() {
return this.booleanProperty;
}
}
Run Code Online (Sandbox Code Playgroud)
似乎工作得很好,可以存储关于按钮的自定义实现的其他信息.但是关于:
class myButton extends Button {
private SimpleBooleanProperty booleanProperty = new SimpleBooleanProperty(false);
myButton(args...) {
// Do something with the property
}
public void setProperty(boolean value) {
this.booleanProperty.set(value);
}
public boolean getProperty() {
return this.booleanProperty.get();
}
}
Run Code Online (Sandbox Code Playgroud)
唯一真正的区别,我看到(纠正我,如果我错了)是你可以将听众附加到属性值,但我觉得好像不仅仅是那个.想法?
JavaFX属性的强大之处在于它们可以以一种在发生更改时自动更新UI的方式进行绑定.
例如,如果textField不包含任何值,请考虑要隐藏的元素:
TextField tf = ...
Node container = ...
container.visibleProperty.bind(tf.textProperty.isNotEmpty());
Run Code Online (Sandbox Code Playgroud)
现在,当您更改文本时tf,您将看到container根据文本的存在切换它是否可见.