JavaFX заполняет tableView данными treeMap - PullRequest
0 голосов
/ 08 мая 2018

У меня есть TableView с двумя столбцами, TreeMap<String, String> и ObservableMap. Я хочу заполнить TableView моими TreeMap данными. Но tableview.setItems(observableMap) не работает, потому что setItems ожидает ObservableList. Я попробовал то же самое с observableHashMap, который тоже не работал. Что я могу сделать, чтобы заполнить мои TableView данными в TreeMap?

1 Ответ

0 голосов
/ 08 мая 2018

Используйте ключи в качестве типа элемента для 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"));

...
...