【发布时间】:2016-10-22 00:49:22
【问题描述】:
我已将我的应用程序设置为基于枚举更改其功能。链接到该枚举的变量的值将决定程序如何解释某些动作,如鼠标点击等。我想要一个标签(可能在左下角的状态区域中)来反映应用程序当前所处的“模式”,并显示一条可读消息供用户查看。
这是我的枚举:
enum Mode {
defaultMode, // Example states that will determine
alternativeMode; // how the program interprets mouse clicks
// My attempt at making a property that a label could bind to
private SimpleStringProperty property = new SimpleStringProperty(this, "myEnumProp", "Initial Text");
public SimpleStringProperty getProperty() {return property;}
// Override of the toString() method to display prettier text
@Override
public String toString()
{
switch(this) {
case defaultMode:
return "Default mode";
default:
return "Alternative mode";
}
}
}
根据我收集到的信息,我正在寻找一种将枚举的 toString() 属性(我将其覆盖为更易于消化的形式)绑定到此标签的方法。绑定是这样的,每当我设置类似
applicationState = Mode.alternativeMode;
标签将自动显示toString() 结果,而无需我每次都放置leftStatus.setText(applicationState.toString())。
这是我尝试过的:(在我的主控制器类中):
leftStatus.textProperty().bind(applicationState.getProperty());
这会将标签设置为初始文本,但在我更新 applicationState 枚举时不会更新。
我做错了什么?
【问题讨论】:
标签: javafx binding enums label