A interface ObservableValue permite você registrar ChangeListeners com uma Property ou um Binding, assim você receberá uma notificação quando o valor de Property ou Binding mudar de um valor para outro.
A notificação vem de um formulário de um método callback dentro do ChangeListener dando acesso a você para referenciar o property ou binding o quais tem o valor mudado, como o velho e novo valor:
1 |
void changed(ObservableValue<? extends T> observable, T oldValue, T newValue) |
Coloquei no método clicouNaPessoa o código:
1 2 3 4 5 |
listPersons.getSelectionModel().selectedIndexProperty().addListener( (ChangeListener) (obsPerson, o, t1) -> { System.out.println("Old Selected Option: " + o); System.out.println("New Selected Option: " +t1); }); |
Método clicouNaPessoa. O código completo está aqui.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public void clicouNaPessoa(MouseEvent mouseEvent) { listPersons.getSelectionModel().selectedIndexProperty().addListener( (ChangeListener) (obsPerson, o, t1) -> { System.out.println("Old Selected Option: " + o); System.out.println("New Selected Option: " +t1); }); listPersons.getSelectionModel().selectedItemProperty() .addListener(personChangeListener = (obsPerson, oldValue, newValue) -> { // System.out.println("OLD: " + oldValue + ", NEW: " + newValue); selectedPerson = newValue; if (newValue != null) { firstnameTextField.setText(selectedPerson.getFirstname()); lastnameTextField.setText(selectedPerson.getLastname()); notesTextArea.setText(selectedPerson.getNotes()); } else { firstnameTextField.setText(""); lastnameTextField.setText(""); notesTextArea.setText(""); } }); } |
Fonte: The Definitive Guide to Modern Java Clients with JavaFX
Deixe um comentário