2015-08-08 166 views
0

我在我的应用程序中有一个TreeView,我想添加一个监听器来获取选中的项目。我目前有:收到Javafx TreeView监听器

treeView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 

      @Override 
      public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 

      }   
     }); 

错误:The method addListener(ChangeListener<? super TreeItem<String>>) in the type ObservableValue<TreeItem<String>> is not applicable for the arguments (new ChangeListener<String>(){})

什么是监听器添加到JavaFX的一个TreeView正确的方法是什么?

它被宣布为TreeView<String> treeView = new TreeView<String>(object);

回答

0

我能够是通过把它变成一个lambda表达式是这样解决这个问题的方法:

treeView.getSelectionModel().selectedItemProperty().addListener((v, oldValue, newValue) -> { 
// Body would go here 

}); 

我不知道为什么,我的第一个方法没有工作,但这确实奏效。

+1

第一种方法不起作用,因为'ChangeListener'的泛型类型是'String',实际上它应该是'TreeItem '。它与lambda表达式一起工作,因为推断了(正确的)参数类型。 –