gpt4 book ai didi

java - 如何使 TreeView 中的 TreeItem 确认鼠标单击事件?

转载 作者:行者123 更新时间:2023-12-01 18:19:56 24 4
gpt4 key购买 nike

fxml文件如下(省略 header ):

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0"
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:id="pane"
fx:controller="com.github.parboiled1.grappa.debugger.mainwindow.MainWindowUi">
<top>
<MenuBar BorderPane.alignment="CENTER">
<Menu mnemonicParsing="false" text="File">
<MenuItem fx:id="loadInput" mnemonicParsing="false"
text="Load file" onAction="#loadFileEvent"/>
<MenuItem fx:id="parse" mnemonicParsing="false"
text="Parse" onAction="#parseEvent"/>
<MenuItem fx:id="closeButton" mnemonicParsing="false"
text="Close" onAction="#closeWindowEvent"/>
</Menu>
</MenuBar>
</top>
<center>
<SplitPane dividerPositions="0.5" prefHeight="160.0" prefWidth="200.0"
BorderPane.alignment="CENTER">
<SplitPane dividerPositions="0.5" orientation="VERTICAL">
<TreeView fx:id="traceTree" prefHeight="200.0"
prefWidth="200.0" editable="false"/>
<TextArea fx:id="traceDetail" prefHeight="200.0"
prefWidth="200.0"/>
</SplitPane>
<TextArea fx:id="inputText" prefHeight="200.0" prefWidth="200.0"/>
</SplitPane>
</center>
</BorderPane>

我可以毫无问题地设置TreeView的根。树已更新,没有问题。

我遇到的问题是我无法在 View 中的给定项目上触发事件。我尝试使用简单的 System.out.println() 添加一个 onMouseClicked 事件,无论我在树中单击哪个项目,我都可以看到该事件被触发。但我根本无法获取 View 中已单击的项目。

我该怎么做?

最佳答案

使用单元工厂向每个树单元注册一个鼠标监听器。我不知道您的 TreeView 中的数据类型,但如果它是 String 它可能看起来像这样:

// Controller class:
public class MainWindowUi {

@FXML
private TreeView<String> traceTree ;

// ...

public void initialize() {
traceTree.setCellFactory(tree -> {
TreeCell<String> cell = new TreeCell<String>() {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty) ;
if (empty) {
setText(null);
} else {
setText(item);
}
}
};
cell.setOnMouseClicked(event -> {
if (! cell.isEmpty()) {
TreeItem<String> treeItem = cell.getTreeItem();
// do whatever you need with the treeItem...
}
});
return cell ;
});
}

// ...
}

关于java - 如何使 TreeView 中的 TreeItem 确认鼠标单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27894108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com