我正在尝试创建一个模拟程序,该程序将计算两个玩家在大量试验中获得某些卡组合的次数。目前,我已经在表中使用JavaFX的Scene Builder整齐地定位了一堆标签,并在我的控制器类中引用了它们的fx:id。每次运行模拟时,都会发生20个以上结果中的一个。每当某个结果发生时,我想在适当的标签上添加一个。此外,我希望看到标签上的值在计算机进行计算时更新。
目前我有一个简单的整数数组,可以跟踪结果发生的次数。但是,我无法将整数数组绑定到标签。我找到的潜在解决方案
int i = 0;
Label.textProperty().bind(String.valueOf(i));
似乎不起作用。此外,我尝试过使用DoubleProperties和NumberBindings做很多事情,但说实话,我不知道我在做什么。有人可以向我解释这个问题的简单解决方案,或者为我提供JavaFX 2中与我的问题相关的绑定的参考(我已经阅读了oracle关于绑定的单页教程,但它似乎并不完全相关)?
答案 0 :(得分:3)
您可以找到基本的绑定内容here 对于我认为您要做的事情,您必须记住您只能绑定Property对象,而不是基元,而不是字符串,也不能绑定任何其他对象。
话虽如此,你必须在适当的Property Object中包装任何数据,例如,如果你想在Label上显示一个String:
StringProperty value = new SimpleStringProperty("Hello");
label.textProperty().bind(value);
然后,您可以更改属性上的值,标签将更新:
value.set("Bye");
这适用于Strings,因为标签上的文本是String,但如果您的数据是Integer或Double,则可以使用转换器:
IntegerProperty value = new SimpleIntegerProperty(10);
label.textProperty().bindBidirectional(value, new NumberStringConverter());
同样适用于双打:
DoubleProperty val = new SimpleDoubleProperty(12.5);
tipText.textProperty().bindBidirectional(val, new NumberStringConverter());
如果您发现自己处于不满足您需求的情况下,您也可以扩展现有的转换器。
希望有所帮助。