【问题标题】:JavaFX Text bind to JodaTime DateTime propertyJavaFX 文本绑定到 JodaTime DateTime 属性
【发布时间】:2013-06-15 13:26:11
【问题描述】:

我有一个简单的文本字段。我需要将它绑定到 JodaTime DateTime 属性的静态实例。 JodaTime 给了我很多属性,但我想不出解决方案。

我需要的只是 DateTime 的实际时间,所以我假设如下:

Text clock = new Text();
clock.textProperty().bind(AppController.getSimulationClock().toLocalTime().toString());

但是,toLocalTime() 返回一个字符串。再说一次,如果我尝试:

Text clock = new Text();
clock.textProperty().bind(AppController.getSimulationClock().dayOfMonth());

作为dayOfMonth() 返回一个实际属性,它仍然不起作用。 仅作记录,AppController.getSimulationClock() 只是返回一个普通的不可变 JodaTime DateTime 对象。

Netbeans 给了我这个解释:

实参org.joda.time.DateTime.Property不能通过方法调用转换为ObservableValue 其中 T 是一个类型变量: T 扩展了接口 javafx.beans.property.Property 中声明的 Object

有什么想法吗?

【问题讨论】:

    标签: java datetime data-binding javafx-2 jodatime


    【解决方案1】:

    DateTime.Property 没有实现 ObservableValue。 JavaFX 和 JodaTime 的属性概念不兼容。

    【讨论】:

    • 还有其他方法吗?每当我的 DateTime 对象发生变化时,只需要更改该文本...有什么想法吗?
    • 尝试调用clock.textProperty().bind(new javafx.beans.property.ReadOnlyStringWrapper(AppController.getSimulationClock().dayOfMonth(), "AsText")); bean 属性 AsText 是来自 org.joda.time.field.AbstractReadableInstantFieldProperty 的 DateTime.Property.getAsText()。
    • 等等,对 DateTime 对象的更改不会自动反映,所以这没有用。也许您可以在每次更改 DateTime 对象以重新检索值时向 JavaFX 发出信号。
    • signal javaFX 是什么意思?设置(并在我每次更新 DateTime 时更新)一些新变量,例如字符串,并绑定到它?
    • javafx.scene.text.Text 确实已经包含一个 StringProperty。您可以在更改 DateTime 对象后调用 clock.textProperty().setValue(AppController.getSimulationClock().d‌​ayOfMonth().getAsText()) 。但由于 gui 线程,这可能需要更复杂的解决方案。
    猜你喜欢
    • 2023-03-21
    • 2010-12-11
    • 1970-01-01
    • 2018-07-28
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多