This question already has answers here:
Javafx Treeview item action event
                            
                                (3个答案)
                            
                    
                2年前关闭。
        

    

我是Java新手,需要帮助。我想将事件添加到TreeView中的特定TreeItem。我有一些代码,它不起作用。我究竟做错了什么?

这是我的代码:

TreeItem<String> item = new TreeItem<>(s);

item.addEventHandler(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>(){
                public void handle(MouseEvent e) {
                    System.out.println("Hello World");
                }
            });

this.item.getChildren().add(item);


它创建一个TreeView,但是该事件不起作用。

谢谢你的帮助。

最佳答案

我认为您要解决的问题是,如果单击TreeItem,则可以在将侦听器添加到所选项目的情况下解决该问题:

treeTable.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
    if(newValue != null && newValue != oldValue){
           System.out.println("Hello World");
    }
});


如果您不熟悉java8的lambda,则这里是带有匿名类的版本:

table.getSelectionModel().selectedItemProperty().addListener(new
ChangeListener<TreeItem<TestRow>>() {
        @Override public void changed(
                ObservableValue<? extends TreeItem<TestRow>> observable,
                TreeItem<TestRow> oldValue,
                TreeItem<TestRow> newValue) {
            if (newValue != null && newValue != oldValue) {
                System.out.println("Hello World");
            }
        }
});

关于java - java.fx中的TreeItem的addEventHandler ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44670830/

10-11 00:31