加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

回调Lambda表达式JavaFX

发布时间:2020-12-15 04:48:15 所属栏目:Java 来源:网络整理
导读:所以,我正在尝试更新我在 Java 6 Release上创建的旧JavaFX应用程序.我得到了一个提示,我可以转换当前的代码并使用lambda表达式,有人可以帮助我在这里转换这段代码或以某种方式指导我? // define a simple boolean cell value for the action column so that
所以,我正在尝试更新我在 Java 6 Release上创建的旧JavaFX应用程序.我得到了一个提示,我可以转换当前的代码并使用lambda表达式,有人可以帮助我在这里转换这段代码或以某种方式指导我?

// define a simple boolean cell value for the action column so that the column will only be shown for non-empty rows.
    addColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<UserDetails,Boolean>,ObservableValue<Boolean>>() {
        @Override public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<UserDetails,Boolean> features) {
            return new SimpleBooleanProperty(features.getValue() != null);
        }
    });

    // create a cell value factory with an add button for each row in the table.
    addColumn.setCellFactory(new Callback<TableColumn<UserDetails,TableCell<UserDetails,Boolean>>() {
        @Override public TableCell<UserDetails,Boolean> call(TableColumn<UserDetails,Boolean> personBooleanTableColumn) {
            return new AddPersonCell(window,tableUser);
        }
    });

解决方法

只有在interfact中有一个抽象方法时,Lambda表达式才有效.由于这是回调的情况,这可以是一个.

基本上你将anonymus类放在形式的lambda表达式(< parameters>) – > <方法体>.

在这种情况下

new Callback<TableColumn.CellDataFeatures<UserDetails,ObservableValue<Boolean>>() {
    @Override public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<UserDetails,Boolean> features) {
        return new SimpleBooleanProperty(features.getValue() != null);
    }
}

(TableColumn.CellDataFeatures<UserDetails,Boolean> features) -> {
    return new SimpleBooleanProperty(features.getValue() != null);
}

这可以进一步简化:

>如果不需要参数类型来决定要调用的方法,则可以删除它们.
>如果只有一个参数没有类型,则可以删除()括号.
>如果方法体只包含一个语句,则{}和;可以删除.如果语句是return语句,则还需要删除return关键字.

这允许您进一步简化lambda表达式

features -> new SimpleBooleanProperty(features.getValue() != null)

使用相同的方法

new Callback<TableColumn<UserDetails,Boolean>>() {
    @Override public TableCell<UserDetails,Boolean> personBooleanTableColumn) {
        return new AddPersonCell(window,tableUser);
    }
}

可以改为

personBooleanTableColumn -> new AddPersonCell(window,tableUser)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读