每当我在tableview中通过combobox添加项目时,滚动后,前面的组合框会被删除?如何解决这个问题。我在使用JavaFx。滚动时我的项目会消失。
此处为我的代码
private void Showtabledata() {
meta=FXCollections.observableArrayList();
meta1=FXCollections.observableArrayList();
try {
Connection conn = DB.getConnection();
ResultSet rs2 = conn.createStatement().executeQuery("SELECT * FROM testgroup_master");
while (rs2.next()) {
String test=rs2.getString("groupname");
meta1.add(test);
meta.add(new Patienttabledetails(rs2.getString("groupname")));
}
} catch (SQLException ex) {
System.err.println("Error" + ex);
}
testCat_tbl.setCellFactory(ComboBoxTableCell.forTableColumn(new DefaultStringConverter(),meta1));
testCat_tbl.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Patienttabledetails, String>>()
{
@Override
public void handle(TableColumn.CellEditEvent<Patienttabledetails, String> event) {
System.out.println("Value"+event.getNewValue());
}
});
table1.setEditable(true);
table1.setItems(null);
table1.setItems(meta);
}
如何避免在组合框中消失值?
屏幕截图显示错误。每当滚动上面选定的项目时,值都会消失。
答案 0 :(得分:0)
如果您指定onEditCommit
处理程序,ComboBoxTableCell
将不会尝试将新值设置为cellValueFactory
在ComboBox
中选择新属性时返回的属性1}}。
这意味着如果您为要存储在项类中的新值指定onEditCommit
处理程序,则需要自己执行此操作:
testCat_tbl.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Patienttabledetails, String>>()
{
@Override
public void handle(TableColumn.CellEditEvent<Patienttabledetails, String> event) {
System.out.println("Value"+event.getNewValue());
// TODO: replace setter name by suitable setter of your Patienttabledetails class here
event.getRowValue().setSomeProperty(event.getNewValue());
}
});