【发布时间】:2019-12-29 02:54:37
【问题描述】:
我正在使用具有 5 列(列的数据类型)的 JavaFX 表视图:任务 ID (int)、任务名称(字符串)、任务描述(字符串)、状态(字符串)和备注(字符串)。现在,我正在从具有相同列的数据库中加载数据,我想要做的是当用户单击软件中的任务状态列时,列单元格更改为组合框(字符串)但列表Combobox 中显示的状态应根据用户尝试编辑的所选项目(也就是任务的状态)而有所不同
我尝试在列的 OnEdit 中创建一个新的 cellFactory,我还尝试覆盖更新项方法并使用布尔变量设置是否将图形设置为组合框
myStatusColumn.setOnEditStart(new EventHandler<TableColumn.CellEditEvent<Task, String>>() {
@Override
public void handle(TableColumn.CellEditEvent<Task, String> event) {
try {
dataBeingEdited = true;
Task task = myTasksTable.getSelectionModel().getSelectedItem();
statuses = Login.dbHandler.getStatuses(task.getTaskTypeID());
myStatusColumn.setCellFactory(new Callback<TableColumn<Task, String>, TableCell<Task, String>>() {
@Override
public TableCell<Task, String> call(TableColumn<Task, String> param) {
return new TableCell<Task,String>(){
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if(empty)
setGraphic(null);
else
{
if(dataBeingEdited)
{
ComboBox<String> comboBox = new ComboBox<>(statuses);
setGraphic(comboBox);
}
}
}
};
}
});
} catch (SQLException e) {
e.printStackTrace();
}
}
});
当我双击状态列时,我希望输出是一个组合框,但我没有让组合框出现,当我得到时
【问题讨论】: