JavaFX用treeMap数据填充tableView

时间:2018-05-08 10:55:11

标签: javafx tableview treemap

我有一个TableView,其中有两列,TreeMap<String, String>ObservableMap。我想用TableView数据填充TreeMap。 但tableview.setItems(observableMap)无效,因为setItems需要ObservableList。我和observableHashMap一样尝试了同样的工作。如何使用TableView中的数据填充TreeMap

1 个答案:

答案 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"));

...