gpt4 book ai didi

java - 编辑单元格 javaFX 后恢复 tableview 中的 oldValue

转载 作者:行者123 更新时间:2023-12-01 23:19:31 26 4
gpt4 key购买 nike

您好,我正在关注 Oracle 网站上的 AddressBook 示例。

bookName.setOnEditCommit(
new EventHandler<TableColumn.CellEditEvent<Books, String>>() {
@Override
public void handle(TableColumn.CellEditEvent<Books, String> t) {
if (t.getNewValue().equals("") || t.getNewValue().length() < 3) {
info.setText("Book name must be greater than 3 characters.");
// set the old value or do not update the cell.
return;
}
((Books) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setBookName(t.getNewValue());
}
}
);

问题是,如果我编辑一个单元格,它只需要新值,但如果字符串为空且少于 3 个字符,我不想更新单元格值。

最佳答案

当支持数据模型未更新但 TableView 显示新的编辑值时,这意味着 TableView 未刷新渲染值。要强制刷新,请执行以下操作:

bookName.setOnEditCommit(
new EventHandler<TableColumn.CellEditEvent<Books, String>>() {
@Override
public void handle(TableColumn.CellEditEvent<Books, String> t) {
if (t.getNewValue().equals("") || t.getNewValue().length() < 3) {
info.setText("Book name must be greater than 3 characters.");

// workaround for refreshing rendered values
t.getTableView().getColumns().get(0).setVisible(false);
t.getTableView().getColumns().get(0).setVisible(true);

// set the old value or do not update the cell.
return;
}
((Books) t.getTableView().getItems().get(
t.getTablePosition().getRow())).setBookName(t.getNewValue());
}
}
);

关于java - 编辑单元格 javaFX 后恢复 tableview 中的 oldValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com