将TableView列连接到HashMap值

时间:2016-09-15 08:12:12

标签: java javafx hashmap tableview

我正在编写一个简单的crud-redactor,并且我遇到了一个问题:

我有一个班级:

public class Note {
    List<String> columnNames;
    HashMap<String, SimpleStringProperty> items;
}

我需要通过TableView以某种方式与setCellValueFactory建立联系。 例如,我在HashMap中有3个值,其中包含键"id""name""age"。所以我希望在TableView中有3列与此HashMap相关联,并在将Notes数组包装到ObservableList并使用TableView方法{{}后表示其值1}}。

1 个答案:

答案 0 :(得分:0)

只需使用值工厂返回给定键的映射值,例如

val RDD = data.map(_.split(',')).map(arr => (arr(0), arr(2)))

如果您需要使用final String key = "id"; TableColumn<Note, String> column = new TableColumn<>("ID"); column.setCellValueFactory(cd -> cd.getValue().items.get(key)); 中的密钥,您可以根据索引获取属性,例如

columnNames

请注意,根据使用的包,您可能需要将getter添加到final String index = 1; TableColumn<Note, String> column = new TableColumn<>("1"); column.setCellValueFactory(cd -> cd.getValue().columnNames.size() <= index ? null : cd.getValue().items.get(cd.getValue().columnNames.get(index))); 类。

如果这是理想的行为,您还可以使用Note代替Map.computeIfAbsent动态创建不存在的属性&#34;

get