JavaFX 用 treeMap 数据填充 tableView

JavaFX fill tableView with treeMap data

我有一个包含两列的 TableView,一个 TreeMap<String, String> 和一个 ObservableMap。我想用我的 TreeMap 数据填充 TableView。 但是 tableview.setItems(observableMap) 不起作用,因为 setItems 需要一个 ObservableList。我用 observableHashMap 尝试了同样的方法,但也没有用。我该怎么做才能用 TreeMap 中的数据填充我的 TableView

使用键作为 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"));

...