How to trigger event when double click on a tree node
我有这个代码在远程Java类中创建新的选项卡。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); } }); |
当我双击树节点时,您能告诉我如何修改代码以打开新的选项卡吗?在我的代码中,当我单击一次时会打开选项卡。我需要什么事件处理程序?
您可以将
使用这里的描述并将其应用于您的
看起来像这样。您可能还需要检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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); } } }); |
在我看来,最佳实践是实现您的单元。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class DoubleClickCellImpl extends TreeCell<String> { @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (item == null || empty) { setText(null); } else { setText(item); } } public DoubleClickCellImpl() { super(); setOnMouseClicked(event -> { TreeItem<String> ti = getTreeItem(); if (ti == null || event.getClickCount() < 2) return; // do something here. }); } } |