6

リモートJavaクラスに新しいタブを作成するこのコードがあります。

treeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<TreeItem<String>>()
        {
            @Override
            public void changed(ObservableValue<? extends TreeItem<String>> observable, TreeItem<String> oldValue, TreeItem<String> newValue)
            {
                System.out.println("Selected Text : " + newValue.getValue());
                // Create New Tab
                Tab tabdata = new Tab();
                Label tabALabel = new Label("Test");
                tabdata.setGraphic(tabALabel);

                DataStage.addNewTab(tabdata);
            }
        });

ツリー ノードをダブルクリックしたときに新しいタブを開くようにコードを変更する方法を教えてください。私のコードでは、一度クリックするとタブが開きます。どのイベント ハンドラーが必要ですか?

4

2 に答える 2

11

メソッドにを追加しEventHandler<MouseEvent>、の戻り値をTreeView.setOnMouseClicked()チェックして、それがダブルクリックであったかどうかを判断できます。上記を削除し、ロジックを に追加します。getClickCount()MouseEventChangeListenerEventHandler

treeViewここの説明を使用して、変数に適用します。

こんな感じになります。アイテムもチェックしたくなるはずですnull

treeView.setOnMouseClicked(new EventHandler<MouseEvent>()
{
    @Override
    public void handle(MouseEvent mouseEvent)
    {            
        if(mouseEvent.getClickCount() == 2)
        {
            TreeItem<String> item = treeView.getSelectionModel().getSelectedItem();
            System.out.println("Selected Text : " + item.getValue());

            // Create New Tab
            Tab tabdata = new Tab();
            Label tabALabel = new Label("Test");
            tabdata.setGraphic(tabALabel);

            DataStage.addNewTab(tabdata);
        }
    }
});
于 2013-06-28T18:02:48.990 に答える