我试图在javafx中创建一个易于用户使用的可编辑列表视图。为此,我使用了on edit commit函数。它通常很擅长做我想做的事情,但是我遇到了一个问题。每次用户编辑最后一个项目时,我都希望它生成另一个项目并开始编辑它。这看起来似乎是微不足道的,但是我在运行中遇到了问题 setOnEditCommit
功能。这是我的密码:
personList.setOnEditCommit(new EventHandler<ListView.EditEvent<String>>() {
@Override
public void handle(ListView.EditEvent<String> t) {
personList.getItems().set(t.getIndex(), t.getNewValue());
if(personList.getSelectionModel().getSelectedIndices().contains(personList.getItems().size()-1)) {
int personNumber = personList.getItems().size() + 1;
personList.getItems().add("person " + personNumber);
personList.edit(personList.getItems().size()-1); //the line that is not working.
}
}
});
注意:personlist是一个列表视图
在上的集合中是否仍有可以从中运行编辑功能 setOnEditCommit
. 谢谢。
1条答案
按热度按时间gpnt7bae1#
基本问题是提交人的重新编辑被取消了。有许多(复杂的)路径可以触发取消,其中之一似乎是对jdk-8094887的“修复”,它相当粗暴地取消了对数据更改的任何编辑。
但这不可能是全部,因为重新编辑后收到的取消是在单元配置期间触发的,大致如下:
运行下面的示例,编辑单个项,然后按enter键生成输出:
我能想到的唯一解决办法是非常脆弱的:像你一样启动重新编辑,然后也启动一个计时器“等待”直到所有内部配置完成,然后再次编辑。显然,我们不想在产品代码中执行任何操作;)