2012-12-21 75 views
4

爲什麼下面的代碼拋出UnsupportedOperationExceptionUnsupportedOperationException在使用javafx SimpleMapProperty

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

如果您發佈了完整的異常和堆棧跟蹤,這將有所幫助。 –

回答

2

如果你真的想創建一個可觀察到的地圖的情況下,你應該使用

ObservableMap<String,String> model = FXCollections.observableHashMap(); 
4

佩斯答案仍然是有效的,但如果你想要一個Property而不僅僅是一個ObservableMap,那麼這不是正確的代碼。

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

將適合更多。您仍然必須使用新的ObservableMap實例初始化SimpleMapProperty。沒有初始MapMap的SimpleMapProperty的構造函數不會爲你創建一個。這是因爲您可以選擇您自己的ObservableMap的實現來支持該屬性。

相關問題