【问题标题】:JavaFX ListView lambdaJavaFX ListView lambda
【发布时间】:2015-11-06 13:41:43
【问题描述】:

我想在 lambda 中处理这个 ListView 的事件:

lvSelModel.selectedItemProperty().addListener(new ChangeListener<String>() {
    public void changed(ObservableValue<? extends String> changed, String oldVal, String newVal) {
        //display the selection
        response.setText("Computer selected is " + newVal);
    }
});

这是一个带有按钮的示例:

原来的匿名类:

btnUp.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent ae) {
        response.setText("you pressed UP");
    }
});

相同的结果,但一个 Lambda:

btnDown.setOnAction( (ae) -> response.setText("you pressed DOWN"));

【问题讨论】:

    标签: java listview javafx lambda


    【解决方案1】:

    逻辑与按钮完全相同。不同的是,这次我们需要编写一个lambda expression,它声明了3个参数(函数式changed方法的三个参数)而不是一个:

    lvSelModel.selectedItemProperty()
              .addListener((changed, oldVal, newVal) -> response.setText("Computer selected is " + newVal));
    

    changed 参数将绑定到 ObservableValue&lt;? extends String&gt;oldValnewVal 将绑定到 String

    【讨论】:

    • 非常感谢!我尝试的 Lambda 参数不正确。
    猜你喜欢
    • 1970-01-01
    • 2017-04-19
    • 2012-06-18
    • 2015-02-27
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2018-12-24
    相关资源
    最近更新 更多