2017-03-01 6 views
0

Eine recht einfache Frage: Ich habe 3 spinners und DatePicker in meinem Pane ein komplettes yyyy/mm/dd hh:mm:ss Datum zu haben (wenn es eine bessere Lösung als diese 4 Elemente ist mir sagen)Zuhörer auf einige Elemente

Und wie wir können tun find_pseudo.textProperty().addListener(...) auf einem TextField ich ein Zuhörer auf den vier Element haben wollen, wenn eine der vier Änderungen bekommen hat -> hop ich tun kann, was ich brauche, um

+0

Welche Codes haben Sie versucht, tun können - können Sie Ihre Probe und was versuchst du? –

+1

Fügen Sie allen einen 'InvalidationListener' hinzu ... – fabian

+0

Tangential verwandt: http://StackOverflow.com/Questions/32613619/How-to-Make-a-timespinner-in-javafx –

Antwort

2

Sie (es ein Prädikat auf eine sortierte Liste gesetzt wird) kann tun

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()); 

Dann wird dateTime.getValue() aktualisiert werden, wenn eines der Felder aktualisiert werden, und ist auch zu beobachten, dh Sie

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

oder

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

Danke! Es hat mir geholfen und es funktioniert :) – azro

Verwandte Themen