2012-11-07 12 views
10

Ich ändere ein ListView mit den Ergebnissen von einer Datenbanksuche, um diese Auswahl zu verwenden, um später eine andere DB-Anfrage zu machen.Gewähltes Element von ListView erhalten

Ich möchte den Feldwert dieses ListView erhalten. Welche Methode kann ich dafür verwenden?

Ich dachte nur, ich kann auch ein Ereignis der onclick hinzufügen und es auf einem Attribut für den Controller behalten. Ist das auch akzeptabel?

+0

Es gibt keine Kontrolle Gridview in JavaFX namens passieren soll. –

+0

Es tut mir schrecklich leid. Ich meinte ListView. Bitte verzeih mir. – Dynelight

+0

Ich schaute in das Dokument und ich fand das: "Um Auswahl und Fokus zu verfolgen, ist es notwendig, sich mit den Klassen SelectionModel und FocusModel vertraut zu machen. Ein ListView hat höchstens eine Instanz jeder dieser Klassen, verfügbar von selectionModel und focusModel-Eigenschaften Obwohl es möglich ist, diese API zum Festlegen eines neuen Auswahlmodells zu verwenden, ist dies in den meisten Fällen nicht erforderlich - die Standardauswahl- und Fokusmodelle sollten in den meisten Fällen funktionieren. " Ich schaute in das FocusModel und dort ist ein getFocusedItem(). Brauche ich das? – Dynelight

Antwort

28

Sprich mit Listenansicht wie folgt aus:

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

ausgewähltes Element aus Listview Anfahrt:

listView.getSelectionModel().getSelectedItem(); 

Tracking (Zuhören) die Veränderungen in der Auswahl der Listenansicht:

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

Arbeitete wie ein Charme! – Dynelight

+1

Gibt es einen setSelectedIndex für Listview ???? – Adil

+1

@Adil Ja, es gibt: listView.getSelectionModel(). Select (index); –

0

Sie Sie können einen benutzerdefinierten Ereignishandler erstellen, indem Sie zuerst eine Klasse für die Behandlung von Mausereignissen erstellen.

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

Nachdem die Klasse zu machen, gehen Sie auf, wo Sie das Ereignis

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