java为javaFx表视图中的每一行动态填充组合框列表
我在JavaFX中创建了一个表视图,表视图中的一列包括 ComboxTableCell。请在下面查找表视图的代码
public class TabViewController {
@FXML
private TabPane cnfmTab;
@FXML
private TableView<TabVO> partsTable;
@FXML
private TableColumn<TabVO, String> column1;
@FXML
private TableColumn<TabVO, String> column2;
@FXML
private TableColumn<TabVO, String> column3;
private ObservableList<TabVO> tableData = FXCollections.observableArrayList();
private ObservableList<String> column1List;
@FXML
public void initialize(){
tableData = FXCollections.observableArrayList(callDAO.getTableData(1));
column1.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getColumn1()));
column1
.setCellFactory(new Callback<TableColumn<tabVO, String>, TableCell<tabVO, String>>() {
@SuppressWarnings({ "rawtypes", "unchecked" })
public TableCell call(TableColumn p) {
ComboBoxTableCell cell = new ComboBoxTableCell(column1List){
@Override
public void updateItem(Object item, boolean empty) {
}
};
cell.setAlignment(Pos.CENTER);
return cell;
}
});
column1.setOnEditCommit(
new EventHandler<CellEditEvent<tabVO, String>>() {
@Override
public void handle(CellEditEvent<tabVO,String> t) {
};
}
);
}
partsTable.setItems(tableData);
}
数据对象:
public class TabVO {
private String column1;
private String column2;
private String column3;
private ObservableList<String> column1List;
/* Getters and Setters */
}
在上面的代码中,表的每一行都是TabVo类型
在表中,列1为组合框类型。现在,column1组合框的列表由 在“TabViewController”中声明的“column1List”,因此填充表视图的所有行 使用相同的下拉列表
但是我希望表的每一行都填充有TabVo中存在的不同列表
有人能告诉我如何访问TabVo对象并用TabVo中的列表填充组合框吗
# 1 楼答案
您需要为单元格定义CellValueFactory。此工厂使用给定行的表项列表的当前值定义列中显示的值。请参阅以下链接:Cell factory in javafx
# 2 楼答案
这是一个MVCE,问题中描述了用例:
第一列在编辑模式下使用combobox,而第二列在文本字段中使用默认工厂