如何在JavaFX 2中将双打数组的值绑定到大量标签

时间:2013-10-14 02:33:03

标签: binding javafx

我正在尝试创建一个模拟程序,该程序将计算两个玩家在大量试验中获得某些卡组合的次数。目前,我已经在表中使用JavaFX的Scene Builder整齐地定位了一堆标签,并在我的控制器类中引用了它们的fx:id。每次运行模拟时,都会发生20个以上结果中的一个。每当某个结果发生时,我想在适当的标签上添加一个。此外,我希望看到标签上的值在计算机进行计算时更新。

目前我有一个简单的整数数组,可以跟踪结果发生的次数。但是,我无法将整数数组绑定到标签。我找到的潜在解决方案

int i = 0;
Label.textProperty().bind(String.valueOf(i));

似乎不起作用。此外,我尝试过使用DoubleProperties和NumberBindings做很多事情,但说实话,我不知道我在做什么。有人可以向我解释这个问题的简单解决方案,或者为我提供JavaFX 2中与我的问题相关的绑定的参考(我已经阅读了oracle关于绑定的单页教程,但它似乎并不完全相关)?

1 个答案:

答案 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());

如果您发现自己处于不满足您需求的情况下,您也可以扩展现有的转换器。

希望有所帮助。