我有这个代码在远程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);
}
});
当我双击树节点时,您能告诉我如何修改代码以打开新选项卡。在我的代码中,单击一次时将打开选项卡。我需要什么样的事件处理程序?
答案 0 :(得分:9)
您可以向EventHandler<MouseEvent>
方法添加TreeView.setOnMouseClicked()
,并检查getClickCount()
的{{1}}返回值,以确定它是否为双击。移除上面的MouseEvent
并将逻辑添加到ChangeListener
。
Use the description here and apply it to your treeView
variable.
它看起来像这样。您可能也想检查EventHandler
的项目。
null
答案 1 :(得分:1)
我认为,最佳实践是实现您的单元格。
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.
});
}
}