我有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);
答案 0 :(得分:0)
解决。问题是当我试图从表列上的监听器打开新阶段时表崩溃了。所以在听众和开火之前,我的行动正在开启新阶段,我将表格列设置为不可编辑的。