2017-08-13 47 views
2

我创建了MapProperty以从数据库读取信息,如下所示。将数据库读取到MapProperty Javafx

命令运行正常使用地图,ArrayList的正常,但错误MapProperty.I希望委员为的ListProperty类型,所以我可以绑定它来控制

public MapProperty<String, ListProperty<String>> mapTaxonomy() { 
     MapProperty<String, ListProperty<String>> mapTaxonomy = new SimpleMapProperty<>(); 
     try { 
      preparedStatement = connection.prepareStatement(""); 
      resultSet = preparedStatement.executeQuery(); 
      while (resultSet.next()) { 
       String taxonomy = resultSet.getString("Taxonomy"); 
       ListProperty<String> memberSelector = mapTaxonomy.get(taxonomy); 
       if (memberSelector == null) { 
        memberSelector = new SimpleListProperty<>(); 
        mapTaxonomy.put(taxonomy, memberSelector); 
       } 
       memberSelector.add(resultSet.getString("Selector")); 
      } 
     } catch (SQLException ex) { 
      Logger.getLogger(ParserService.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     return mapTaxonomy; 
    } 

@Override 
    public void initialize(URL location, ResourceBundle resources) { 
     MapProperty<String, ListProperty<String>> mapTaxonomy = mapTaxonomy(); 
    } 

我运行了以下错误语句后,请帮我

Caused by: java.lang.UnsupportedOperationException 
    at java.util.AbstractMap.put(AbstractMap.java:209) 
    at javafx.beans.binding.MapExpression.put(MapExpression.java:262) 
    at touya.akira.storages.database.table.parser.ParserService.mapTaxonomy(ParserService.java:70) 
    at touya.akira.parser.styles.fixed.method.pagination.PaginationPresenter.initialize(PaginationPresenter.java:64) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) 
    ... 67 more 

回答

1

一个SimpleMapProperty的默认值是空不可修改地图。当您尝试修改它时引发异常。指定一个可修改的ObservableMap作为初始值来解决此问题。

MapProperty<String, ListProperty<String>> mapTaxonomy = new SimpleMapProperty<>(FXCollections.observableHashMap()); 
+0

感谢@fabian你的帮助我成功了,我必须要找到的一些Oracle文档“一SimpleMapProperty的默认值是一个空的不可修改的”我不上它。如果可能的 找到教程,请帮助我的文档,我指更 https://docs.oracle.com/javafx/2/api/javafx/beans/property/SimpleMapProperty.html –

+1

@KiênĐịnh似乎没有要在javadoc中的任何指示;我看着源代码... – fabian