web-dev-qa-db-fra.com

Obtenir l'élément sélectionné de ListView

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?

14
Dynelight

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);
    }
});
37
Uluk Biy

JFXtras a une classe qui étend ListView qui a une propriété appelée selectedItemProperty que j'ai trouvée très pratique.

http://jfxtras.org/overview.html#_listview

0
BWC semaJ

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());
        }
 });
0
Japhet Ndemera