JavaFX Span Tableview按映射项合并单元格
你好,我有以下地图:JavaFX Span Tableview按映射项合并单元格,java,javafx,tableview,Java,Javafx,Tableview,你好,我有以下地图: Map<String,ArrayList> 我已经尝试过几个CellValueFactory回调,但我不知道如何读取我的值,以及如何跨越或合并这些单元格 致以最诚挚的问候我通过为第一列创建一个CellValueFactory解决了这个问题,在该列中我将ArrayList作为字符串抓取,因此: arrayListCol.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<
Map<String,ArrayList>
我已经尝试过几个CellValueFactory回调,但我不知道如何读取我的值,以及如何跨越或合并这些单元格
致以最诚挚的问候我通过为第一列创建一个CellValueFactory解决了这个问题,在该列中我将ArrayList作为字符串抓取,因此:
arrayListCol.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Map.Entry<PropertyDifference, DifferenceFileList>, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<Map.Entry<PropertyDifference, DifferenceFileList>, String> p) {
return new SimpleStringProperty(Arrays.toString(p.getValue().getValue().getFileList().toArray()));
}
});
这将处理列条目的值。现在我考虑了一种更进一步的表示形式,并为此使用了一个CellFactory,它随后对单元格进行格式化
Callback<TableColumn<Map.Entry<PropertyDifference, DifferenceFileList>, String>, TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String>> tableCellList = new Callback<TableColumn<Map.Entry<PropertyDifference, DifferenceFileList>, String>, TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String>>() {
@Override
public TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String> call(TableColumn<Map.Entry<PropertyDifference, DifferenceFileList>, String> param) {
return new TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String>() {
@Override
protected void updateItem(String item, boolean empty) {
if (item != null) {
item = item.replace("[", "") .replace("]", "");
ObservableList<String> items = FXCollections.observableArrayList(item.split(","));
final ListView<String> listView = new ListView<String>();
listView.setItems(items);
setGraphic(listView);
}
}
};
}
};
arrayListCol.setCellFactory(tableCellList);
有什么不清楚的吗?->只是评论一下
|--------------|-----------|
|[e1,e2,e3] | String e |
|--------------|-----------|
|[x1,x2] | String x |
|--------------|-----------|
Callback<TableColumn<Map.Entry<PropertyDifference, DifferenceFileList>, String>, TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String>> tableCellList = new Callback<TableColumn<Map.Entry<PropertyDifference, DifferenceFileList>, String>, TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String>>() {
@Override
public TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String> call(TableColumn<Map.Entry<PropertyDifference, DifferenceFileList>, String> param) {
return new TableCell<Map.Entry<PropertyDifference, DifferenceFileList>, String>() {
@Override
protected void updateItem(String item, boolean empty) {
if (item != null) {
item = item.replace("[", "") .replace("]", "");
ObservableList<String> items = FXCollections.observableArrayList(item.split(","));
final ListView<String> listView = new ListView<String>();
listView.setItems(items);
setGraphic(listView);
}
}
};
}
};
arrayListCol.setCellFactory(tableCellList);
setGraphic(listView);
|------|-----------|
| e1 | String e |
| e2 | |
| e3 | |
|------|-----------|
| x1 | String x |
| x2 | |
|------|-----------|