已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
21小时前关门了。
Improve this question
所以我有这个方法:
public void trackSelection() {
showtimesListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, currentValue) ->
System.out.println(currentValue));
}
它跟踪JavaFX中listview组件中当前选定的项。它工作得很好,但是我想更改该方法以返回字符串currentValue,而不是仅仅打印它,以便可以从项目的其他部分访问它。
这就是我失败的地方:
public String trackSelection() {
showtimesListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, currentValue) ->
return (currentValue);
}
由于某种原因,我似乎只能在lambda表达式的末尾使用void返回类型,有人知道我如何解决这个问题,以便返回字符串吗?
2条答案
按热度按时间x3naxklr1#
通过lambda,你可以有效地实现一个侦听器接口,比如https://docs.oracle.com/javase/8/javafx/api/javafx/beans/value/ChangeListener.html,正如你所看到的,它只有一个返回类型为void的方法。
你最需要做的就是向可观察对象提供currentValue,但是你并没有提供任何你真正想要实现的信息。
cbjzeqam2#
Lambda表达式并不是凭空出现的,它们符合一个 Functional interface,它是一个声明了一个抽象方法的接口,而lambda是由该接口定义的契约的实现。
您想要的是不可能的,因为无法更改来自JavaFX的协定。
有关Lambda表达式的详细信息,请参阅official tutorial provided by Oracle。