2012-09-17 10 views
5

Vorrei eseguire un'azione quando seleziono un elemento dal mio listview in javafx 2. Uso un'applicazione NetBeans JavaFX fxml e SceneBuilder. Il metodo OnMouseClicked in SceneBuilder non ha funzionato. Mi ha restituito un errore che non riesce a trovare il metodo che ho già dichiarato.Come eseguire un'azione selezionando un elemento da ListView in JavaFX 2

Qualcuno può dirmi come sono riusciti a farlo funzionare?

risposta

19

Non è possibile farlo solo nel file FXML.
Definire il listView corrispondente (assumendo fx:id="myListView" in FXML) in classe Controller del file FXML:

@FXML 
private ListView<MyDataModel> myListView; 

Aggiungi ascoltatore in init/metodo che ascolterà Visualizzazione Elenco voce cambia inizio:

myListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<MyDataModel>() { 

    @Override 
    public void changed(ObservableValue<? extends MyDataModel> observable, MyDataModel oldValue, MyDataModel newValue) { 
     // Your action here 
     System.out.println("Selected item: " + newValue); 
    } 
}); 

MyDataModel può essere il proprio modello di struttura dati classe o semplicemente un String.
Ad String esempio,

@FXML 
private ListView<String> myListView; 

... 
... 

ObservableList<String> data = FXCollections.observableArrayList("chocolate", "blue"); 
myListView.setItems(data); 

myListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
    @Override 
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
     // Your action here 
     System.out.println("Selected item: " + newValue); 
    } 
}); 
+0

ringraziarvi per la risposta rapida. Ma ho problemi con MyDataModel. Ho provato come una stringa .. come String a = "test"; e ObservableList data = FXCollections.observableArrayList ( "cioccolato", "blu"); Entrambi non hanno funzionato per me .. chiede una lezione .. Puoi darmi un esempio, per favore? –

Problemi correlati