2012-11-07 12 views
10

Modificare un ListView con i risultati di una ricerca nel database per poter utilizzare tale selezione per effettuare successivamente un'altra richiesta DB.Ottenere l'elemento selezionato da ListView

Voglio ottenere il valore di campo di quello ListView. Che metodo posso usare per quello?

Ho solo pensato di poter aggiungere un evento allo onclick e tenerlo su un attributo per il controller. Anche questo è accettabile?

+0

Non v'è alcun controllo denominato GridView in JavaFX. –

+0

Sono terribilmente dispiaciuto. Intendevo ListView. Ti prego, perdonami. – Dynelight

+0

Ho esaminato il documento e ho trovato questo: "Per tenere traccia di selezione e messa a fuoco, è necessario acquisire familiarità con le classi SelectionModel e FocusModel. Un ListView ha al massimo una istanza di ciascuna di queste classi, disponibile da selectModel e Proprietà focusModel, mentre è possibile utilizzare questa API per impostare un nuovo modello di selezione, nella maggior parte dei casi ciò non è necessario - i modelli di selezione e messa a fuoco predefiniti dovrebbero funzionare nella maggior parte dei casi. " Ho esaminato il FocusModel e c'è un getFocusedItem(). E 'quello di cui ho bisogno? – Dynelight

risposta

28

dire con vista lista come questa:

ListView<String> listView =new ListView<String>(); 

Ottenere elemento selezionato da ListView:

listView.getSelectionModel().getSelectedItem(); 

tracking (assistere) i cambiamenti nella selezione visualizzazione elenco:

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); 
    } 
}); 
+1

Ha funzionato come un fascino! – Dynelight

+1

C'è qualche setSelectedIndex per Listview ???? – Adil

+1

@Adil sì c'è: listView.getSelectionModel(). Select (index); –

0

È può creare un gestore di eventi personalizzato, innanzitutto creare una classe per gestire gli eventi del mouse.

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 
    } 
} 

Dopo aver effettuato la classe, andare dove si desidera che l'evento accada

list.setOnMouseClicked(new ListViewHandler(){ 
     @Override 
     public void handle(javafx.scene.input.MouseEvent event) { 
      System.out.print(list.getSelectionModel().getSelectedIndex()); 
     } 
}); 
Problemi correlati