2012-11-07 16 views
10

Modyfikuję ListView z wynikami wyszukiwania w bazie danych, aby użyć tego wyboru, aby później wprowadzić inne żądanie DB.Uzyskiwanie wybranego elementu z ListView

Chcę uzyskać wartość pola tego ListView. Jaką metodę mogę użyć do tego?

Po prostu pomyślałem, że mogę również dodać wydarzenie do onclick i zachować je dla atrybutu kontrolera. Czy to też jest do przyjęcia?

+0

nie ma kontroli GridView w nazwie JavaFX. –

+0

Bardzo mi przykro. Miałem na myśli ListView. Proszę wybacz mi. – Dynelight

+0

Zajrzałem do dokumentu i znalazłem to: "Aby śledzić selekcję i fokus, należy zapoznać się z klasami SelectionModel i FocusModel. ListView ma najwyżej jedno wystąpienie każdej z tych klas, dostępne z SelectionModel i Właściwości focusModel. Chociaż możliwe jest użycie tego API do ustawienia nowego modelu selekcji, w większości przypadków nie jest to konieczne - domyślne modele wyboru i fokusowania powinny działać w większości przypadków. " Zajrzałem do FocusModel i tam jest getFocusedItem(). Czy to jest to, czego potrzebuję? – Dynelight

Odpowiedz

28

powiedzieć z widoku listy tak:

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

Pierwsze wybrany element z ListView:

listView.getSelectionModel().getSelectedItem(); 

Tracking (Listening) zmian w doborze lista Widok:

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

Pracował jak urok! – Dynelight

+1

Czy jest jakiś setSelectedIndex dla Listview ???? – Adil

+1

@Adil tak jest: listView.getSelectionModel(). Select (index); –

0

You może utworzyć niestandardową procedurę obsługi zdarzenia, najpierw utwórz klasę do obsługi zdarzeń myszy.

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

Po dokonaniu klasę, idź, gdzie chcesz zdarzenie wydarzy

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