【问题标题】:String can not be casted to ObservableValue字符串不能转换为 ObservableValue
【发布时间】:2015-04-21 15:39:13
【问题描述】:

我的模型中有一个要跟踪的字符串(字符串代表一个大陆)。如果大陆发生变化,则应在 gui 中使用该大陆的正确国家/地区更新 ListView。

String selectedContinent;
ObservableValue continent = (ObservableValue) selectedContinent;
continent.addListener( ......

显然我得到错误:不兼容的类型:字符串无法转换为 ObservableValue。

我以前使用过 ObservableList 等。但是这个 ObservableValue 对我来说是新的。搜索后,我发现了很多与 Property 等相关的内容。但我无法从 sorta 中学到任何东西。

【问题讨论】:

  • 你能用StringProperty代替吗?我自己对 javafx 不熟悉,但是通过 Google 快速搜索,您似乎可以使用 StringProperty(通过 Property 接口实现 ObservableValue)来包装您的 selectedContinent 字符串,然后在其上调用 addListener。
  • 物业的附加价值是多少?我会看看我能做什么。
  • 您应该能够创建一个新的 StringProperty 实例并在其上调用 setValue(selectedContinent) 以将您的 selectedContinent 包装在其中,然后您可以利用 StringProperty 的方法(addLIsener 等)
  • StringProperty 的附加值是它是ObservableValue,因此您可以为其添加侦听器。 String 不是 ObservableValue

标签: java casting javafx-8 observable


【解决方案1】:

您可以改用 StringProperty。您不能实例化 StringProperty,因为它是一个抽象类,所以请使用 SimpleStringProperty。

例如

SimpleStringProperty selectedContinent = new SimpleStringProperty;
selectedContinent.setValue(selection);
selectedContinent.addListener(....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多