0

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

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

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

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

4

1 回答 1

3

您可以在此处找到基本的绑定内容。
对于我认为您正在尝试做的事情,您必须记住您只能绑定 Property 对象,不能绑定原始对象,不能绑定字符串,也不能绑定任何其他对象。

话虽如此,您必须将任何数据包装在适当的属性对象中,例如,如果您想在标签上显示字符串:

        StringProperty value = new SimpleStringProperty("Hello");
        label.textProperty().bind(value);

然后,您可以更改属性的值,标签将更新:

        value.set("Bye");

这适用于字符串,因为标签上的文本是字符串,但如果您的数据是整数或双精度数,则可以使用转换器:

        IntegerProperty value = new SimpleIntegerProperty(10);
        label.textProperty().bindBidirectional(value, new NumberStringConverter());

这同样适用于双打:

        DoubleProperty val = new SimpleDoubleProperty(12.5);
        tipText.textProperty().bindBidirectional(val, new NumberStringConverter());

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

希望有帮助。

于 2013-10-15T19:05:45.627 回答