java - ListView编辑没有将单元格切换到输入状态

标签 java events listview javafx

我有一个 ListView,其中包含表名称和一个添加按钮。

tablesListView.setEditable(true);
tablesListView.setCellFactory(TextFieldListCell.forListView());
tablesListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
addTableButton.setOnAction(new EventHandler<ActionEvent>(){
    @Override
    public void handle(ActionEvent evt) {
        tablesListView.getItems().add("");
        tablesListView.getSelectionModel().selectLast();
        tablesListView.edit(tablesListView.getSelectionModel().getSelectedIndex());
    }
});

因此,当我单击列表中的某个单元格时,它会将其状态切换到 TextField,但这不适用于按钮,该单元格将被选中,但不会切换。有什么帮助吗?

最佳答案

尝试

tablesListView.setEditable(true);
tablesListView.setCellFactory(TextFieldListCell.forListView());
tablesListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

final Timeline animation = new Timeline(
        new KeyFrame(Duration.seconds(.1),
        new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent actionEvent) {
                tablesListView.edit(tablesListView.getSelectionModel().getSelectedIndex());
            }
        }));
animation.setCycleCount(1);

addTableButton.setOnAction(new EventHandler<ActionEvent>(){
    @Override
    public void handle(ActionEvent evt) {
        tablesListView.getItems().add("");
        tablesListView.getSelectionModel().selectLast();
        animation.play();
    }
});

实际上 Platform.runLater() 可以工作,但只是偶尔,因为它会在“ future 某个未指定的时间”运行可运行程序。因此,您需要指定编辑命令运行的时间,例如我的代码示例中的时间线。编辑命令推迟0.1秒。

关于java - ListView编辑没有将单元格切换到输入状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11997041/

相关文章:

java代码在编译时在mongodb中出错

java - JAXB un/marshalling : Is there a difference between using arrays and lists?

php - Symfony2 在内核请求事件中抛出 404

actionscript-3 - 在as3中禁用重复键盘按下事件

vb.net - MouseWheel,确定上下滚动事件

java - 一个 ListView 行中有多行文本?

java - 原始类型/T 无法解析

java - 如何将 RealmList 更改为 RealmResult?

listview - 如何自定义ObjectListField?

java - 如何将 notifyDataSetChanged() 与包含带有 ListView 的 fragment 的 viewpager 一起使用