addEventHandler到javafx中的TreeItem

时间:2017-06-21 08:34:36

标签: java javafx treeview

我是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,但该事件不起作用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为你想要处理这个问题,如果你点击一个TreeItem,如果你为所选项添加一个监听器,这可以解决简单问题:

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

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

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");
            }
        }
});