java - 使用 javafx SimpleMapProperty 时出现 UnsupportedOperationException

标签 java javafx-2

为什么下面的代码会抛出UnsupportedOperationException

import javafx.beans.property.MapProperty;
import javafx.beans.property.SimpleMapProperty;


public class TestMapProperty {
    static MapProperty<String, String> model = new SimpleMapProperty<String, String>();


    public static void main(String[] args) {
        model.put("blue", "green"); // exception thrown here
    }
}

堆栈跟踪:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractMap.put(AbstractMap.java:203)
    at javafx.beans.binding.MapExpression.put(MapExpression.java:277)
    at TestMapProperty.main(TestMapProperty.java:10)

最佳答案

Pace 的答案仍然有效,但如果您想要一个属性而不仅仅是一个 ObservableMap,那么这不是正确的代码。

static MapProperty<String, String> model = new SimpleMapProperty<String, String>(FXCollections.observableHashMap());

会更适合。您仍然必须使用新的 ObservableMap 实例初始化 SimpleMapProperty。没有 SimpleMapProperty 初始 Map 的构造函数不会为您创建一个。这是因为您可以选择自己的 ObservableMap 实现来支持属性。

关于java - 使用 javafx SimpleMapProperty 时出现 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995102/

相关文章:

java - 圆形和方形显示器检测 - Android Wear 服务

java - 谷歌搜索克隆错误

java - 选择哪个 ChoiceBox-Event?

java - 如何访问 ScrollPane 的滚动条

java - 如何创建从内存到数据库的后写缓存?

java - 更改@ConfigurationProperties 中的分隔符以读取列表属性

java - 通过组合嵌套列表和复制单个值来扩展列表

javafx-2 - JavaFx 2 - 自包含应用程序及其偏好、数据库等

tableview - 如何填充在 JavaFx Scene Builder 中设计的 fxml 文件中定义的 TableView

layout - 将组件移出 ScrollPane - JavaFX