【问题标题】:addEventHandler to TreeItem in javafx [duplicate]在javafx中将EventHandler添加到TreeItem [重复]
【发布时间】:2017-06-21 08:34:35
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

    标签: java javafx treeview


    【解决方案1】:

    如果你点击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");
                }
            }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      相关资源
      最近更新 更多