在tableview中,滚动会删除使用组合框选择的先前项目

时间:2017-10-09 09:06:47

标签: java javafx

每当我在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);

}

如何避免在组合框中消失值?

Image 1 image 2 image 3

屏幕截图显示错误。每当滚动上面选定的项目时,值都会消失。

1 个答案:

答案 0 :(得分:0)

如果您指定onEditCommit处理程序,ComboBoxTableCell将不会尝试将新值设置为cellValueFactoryComboBox中选择新属性时返回的属性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());
        }
    });