【问题标题】:ListView edit is not switching cell to input stateListView 编辑没有将单元格切换到输入状态
【发布时间】:2012-08-16 23:50:52
【问题描述】:

我有一个包含表名的 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,但这不适用于按钮,单元格会被选中,但不会切换。有什么帮助吗?

【问题讨论】:

    标签: java events listview javafx


    【解决方案1】:

    试试

    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() 有效,但只是偶尔,因为它会在“未来某个未指定的时间”运行可运行文件。因此,您需要指定编辑命令应该运行的时间,例如我的代码示例中的时间线。编辑命令延迟 0.1 秒。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2020-12-12
    相关资源
    最近更新 更多