0

テーブル名と追加ボタンを含む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に切り替わりますが、ボタンでは機能しません。セルは選択されますが、切り替えられません。何か助けはありますか?

4

1 に答える 1

2

試す

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秒間延期されました。

于 2012-08-17T08:52:56.713 に答える