我有一个TableView
,其中有两列,TreeMap<String, String>
和ObservableMap
。我想用TableView
数据填充TreeMap
。
但tableview.setItems(observableMap)
无效,因为setItems
需要ObservableList
。我和observableHashMap
一样尝试了同样的工作。如何使用TableView
中的数据填充TreeMap
?
答案 0 :(得分:2)
使用密钥作为TableView
的项目类型,并使用cellValueFactory
作为值列来提取值:
Map<String, String> map = ...
TableView<String> tableView = new TableView();
// fill table with keys
tableView.getItems().addAll(map.keySet());
TableColumn<String, String> keyColumn = new TableColumn<>("key");
keyColumn.setCellValueFactory(cd -> new SimpleStringProperty(cd.getValue()));
TableColumn<String, String> valueColumn = new TableColumn<>("value");
valueColumn.setCellValueFactory(cd -> new SimpleStringProperty(map.get(cd.getValue())));
tableView.getColumns().addAll(keyColumn, valueColumn);
或者您也可以使用TableView<Map.Entry<String, String>>
...
// fill table with keys
tableView.getItems().addAll(map.entrySet());
TableColumn<Map.Entry<String, String>, String> keyColumn = new TableColumn<>("key");
keyColumn.setCellValueFactory(new PropertyValueFactory<>("key"));
TableColumn<Map.Entry<String, String>, String> valueColumn = new TableColumn<>("value");
valueColumn.setCellValueFactory(new PropertyValueFactory<>("value"));
...