Je modifie un ListView
avec les résultats d’une recherche dans la base de données afin d’utiliser cette sélection pour faire une autre demande de base de données ultérieurement.
Je veux obtenir la valeur de champ de ce ListView
. Quelle méthode puis-je utiliser pour cela?
Je pensais juste que je pouvais aussi ajouter un événement à onclick
et le conserver dans un attribut du contrôleur. Est-ce acceptable aussi?
Dites avec la vue liste comme ceci:
ListView<String> listView =new ListView<String>();
Obtenir l'élément sélectionné de ListView:
listView.getSelectionModel().getSelectedItem();
Suivre (écouter) les changements dans la sélection de la vue liste:
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println("ListView selection changed from oldValue = "
+ oldValue + " to newValue = " + newValue);
}
});
JFXtras a une classe qui étend ListView qui a une propriété appelée selectedItemProperty que j'ai trouvée très pratique.
Vous pouvez créer un gestionnaire d'événements personnalisé, tout d'abord créer une classe pour gérer les événements de souris.
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
class ListViewHandler implements EventHandler<MouseEvent> {
@Override
public void handle(MouseEvent event) {
//this method will be overrided in next step
}
}
Après avoir fait le cours, allez où vous voulez que l'événement se passe
list.setOnMouseClicked(new ListViewHandler(){
@Override
public void handle(javafx.scene.input.MouseEvent event) {
System.out.print(list.getSelectionModel().getSelectedIndex());
}
});