Comment puis-je obtenir l'élément sélectionné à partir d'une TableView
en JavaFX?
J'utilise actuellement
ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();
mais cela ne me renvoie pas l'élément sélectionné dans le modèle de sélection.
Ok, supposons que vous ayez une classe de modèle de données nommée Person
. Par ici:
Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());
Notez que TableView
doit prendre un Person
comme argument de type pour éviter de transtyper:
@FXML
private TableView<Person> taview;
ou
TableView<Person> taview = new TableView<>();
lorsque votre ligne est sélectionnée, vous retournerez une instance Person
. Ensuite, faites ce que vous voulez avec cette instance.
tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
//Check whether item is selected and set value of selected item to Label
if(tableview.getSelectionModel().getSelectedItem() != null)
{
TableViewSelectionModel selectionModel = tableview.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(newValue);
System.out.println("Selected Value" + val);
}
}
});
En utilisant ce code, vous pouvez obtenir la valeur sélectionnée à partir de JAVAFX TABLEVIEW Cell.
Merci..
@pranishres
Voici mon essai pour un écouteur de changement de sélection de cellule (même si la ligne ne change pas), inspiré du code de @Java Man:
tableView.getSelectionModel().setCellSelectionEnabled(true);
ObservableList selectedCells = tableView.getSelectionModel().getSelectedCells();
selectedCells.addListener(new ListChangeListener() {
@Override
public void onChanged(Change c) {
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(tablePosition.getRow());
System.out.println("Selected Value" + val);
}
});