【问题标题】:Listener on some elements某些元素的监听器
【发布时间】:2017-03-01 19:13:48
【问题描述】:

一个非常简单的问题:我的Pane 中有 3 个spinners 和一个DatePicker 有一个完整的yyyy/mm/dd hh:mm:ss 日期(如果有比这4 个元素告诉我的更好的解决方案)

正如我们可以在TextField 上执行find_pseudo.textProperty().addListener(...) 一样,我想在四个元素上设置一个监听器,如果四个元素中的一个发生了变化-> 跳我可以做我需要做的事情(它设置了一个谓词在排序列表上)

【问题讨论】:

标签: java javafx javafx-8 listener


【解决方案1】:

你可以的

ObjectBinding<LocalDateTime> dateTime = Bindings.createObjectBinding(() -> 
    LocalDateTime.of(
        datePicker.getValue(), 
        LocalTime.of(hourSpinner.getValue(), minuteSpinner.getValue(), secondsSpinner.getValue())),
    datePicker.valueProperty(), hourSpinner.valueProperty(), minuteSpinner.valuePropertY(), secondsSpinner.valueProperty());

然后dateTime.getValue()会在任何字段更新时更新,并且也是可观察的,即你可以这样做

dateTime.addListener((obs, oldDateTime, newDateTime) -> {
    // do something with newDateTime
});

filteredList.predicateProperty().bind(Bindings.createObjectBinding(() -> 
    myObject -> myObject.getSomeDateTimeValue().isAfter(dateTime.getValue()),
    dateTime));

【讨论】:

    猜你喜欢
    • 2013-10-06
    • 2021-03-17
    • 2022-01-17
    • 2017-04-16
    • 2013-10-03
    • 2021-11-21
    • 2014-02-18
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多