在使用JavaFX的SimpleMapProperty时出现UnsupportedOperationException异常

6
为什么以下代码会抛出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)

3
请提供完整的异常信息和堆栈跟踪。 - Aaron Kurtzhals
2个回答

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

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


3
如果您想创建一个可观察的映射实例,您应该使用以下方法:
ObservableMap<String,String> model = FXCollections.observableHashMap();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接