添加新行时,javaFX表视图无法更新表崩溃

时间:2014-05-10 08:54:52

标签: javafx tableview refresh

我有TableView的列数,我在第一列设置了onEditCommit方法以获取插入的值,然后根据该值从数据库中检索数据并在其他列中设置检索到的数据。该表无法更新其内容。

accountNoCol.setOnEditCommit(new EventHandler<CellEditEvent<Bond, String>>() {
        @Override
        public void handle(CellEditEvent<Bond, String> event) {
            String newValue = event.getNewValue();
            Bond bond = event.getRowValue();
            int selectedRow = event.getTablePosition().getRow();
            if (isInteger(newValue)) {
                ((Bond) event.getTableView().getItems().get(
                        event.getTablePosition().getRow())).setAccountNo(newValue);

                if (isDebtAccount(newValue)) {
                    String accountName = getDebtAccountName(newValue);
                    String coinName = getCoinName(newValue);
                    float coinExchange = getCoinExchange(newValue);

                    bond.setAccountName(accountName);
                    bond.setCoinName(coinName);
                    bond.setCoinExchange(coinExchange);



                    bondTable.getSelectionModel().select(selectedRow, statementCol);

                } else if (isNonDebtAccount(newValue)) {
                    String accountName = getNonDebtAccountName(newValue);
                    bond.setAccountName(accountName);
                    bond.setCoinName(getDefaultCoinName());
                    bond.setCoinExchange(1);



                    bondTable.getSelectionModel().select(selectedRow, statementCol);
                } 
                else {
                    System.out.println("wrong acount name");
                    // show accounts table - i guess
                }
            } else {
                if (newValue.length() == 0) {
                    System.out.println("length : " + newValue.length());
                    ((Bond) event.getTableView().getItems().get(
                            event.getTablePosition().getRow())).setAccountNo(newValue);
                }
            }
        }
    });

我尝试使用下一行但是在添加新行后表格崩溃了

bondData.set(selectedRow,Bond);

1 个答案:

答案 0 :(得分:0)

解决。问题是当我试图从表列上的监听器打开新阶段时表崩溃了。所以在听众和开火之前,我的行动正在开启新阶段,我将表格列设置为不可编辑的。