A interface Observable permite você registrar InvalidationListeners para uma Property ou um Binding, assim você receberá uma notificação quando a Property ou Binding tornar-se invalidated.
A Property torna-se invalidated se o método set() ou setValue() é chamada com um valor diferente do valor atual. Um Binding torna-se invalidated quando o método invalidate() é chamado ou quando sua dependência se torna invalidated.
O método callback dentro do InvalidationListener tem a seguinte assinatura, dá a você acesso para referenciar o objeto Observable:
1 |
void invalidated(Observable observable); |
Nota: Um evento invalidation é lançado somente uma vez pela as Properties do JavaFX se você chamar os setters com o mesmo valor várias vezes.
Podemos testar essas duas Interfaces com o nosso projeto anterior.
No método remover adicionei a linha:
1 |
listPersons.getItems().addListener((ListChangeListener) change -> System.out.println("Mudança Detectada! ")); |
Essa linha de comando vai lançar a mensagem Mudança Detectada!, quando o usuário remover uma pessoa da lista.
1 2 3 4 5 6 7 8 9 10 11 |
public void removeButtonAction(javafx.event.ActionEvent actionEvent) { if(selectedPerson==null){ System.out.println("Escolhe uma pessoa na lista para ser removida."); }else { listPersons.getItems().addListener((ListChangeListener) change -> System.out.println("Mudança Detectada! ")); removeButton.disableProperty().bind( listPersons.getSelectionModel().selectedItemProperty().isNull()); obsPerson.remove(selectedPerson); } } |
Fonte: The Definitive Guide to Modern Java Clients with JavaFX
Deixe um comentário