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"));
...
我有一个包含两列的 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"));
...