代码之家  ›  专栏  ›  技术社区  ›  Umut Savas

JavaFX用treeMap数据填充tableView

  •  0
  • Umut Savas  · 技术社区  · 7 年前

    我有一个 TableView 有两列,a TreeMap<String, String> ObservableMap .我想填写 表格视图 与我的 TreeMap 数据 但是 tableview.setItems(observableMap) 不起作用,因为 setItems 需要 ObservableList .我也试过了 observableHashMap 这也没用。我能做些什么来填补我的 表格视图 我的数据在 树图 ?

    1 回复  |  直到 7 年前
        1
  •  3
  •   fabian    7 年前

    将键用作 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"));
    
    ...