Reputation: 525
How do I get the selected item from a TableView
in JavaFX?
I am currently using
ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();
but that does not return me the one selected item in the selection model.
Upvotes: 37
Views: 123913
Reputation: 161
Object row2 = tableEmployees.getSelectionModel().getSelectedItems().get(0);
String ordre = row2.toString().split(",")[0].substring(1);
System.out.println("Ordre N " + ordre);
well this is the best solution you can found it ever
Upvotes: -1
Reputation: 31
For single item selection...
Product p = taview.getSelectionModel().getSelectedItem();
System.out.println(p.getName());
For multiple item selection...
ArrayList<Product> p = new ArrayList<>(taview.getSelectionModel().getSelectedItems());
for (Product res : p) {
System.out.println(res.getName());
}
Upvotes: 3
Reputation: 161
you can use this method maybe it works for you
ObservableList rowList = (ObservableList) tblView.getItems().get(getIndex());
and for the call method will be like that
String email = rowList.get(1).toString();
String contact = rowList.get(2).toString();
String name= rowList.get(0).toString();
Upvotes: 0
Reputation: 170
you can get data from tableview like that
For One ItemSelection
`tableview_obj.getSelectionModel().getSelectedItem().yourgetterobjectname`
and Mulltiple Item Selection
tableview_obj.getSelectionModel().getSelectedItems().get(indexNo).yourgetterobjectname
Upvotes: 0
Reputation: 749
if you have a Bean class named Employee.
Employee employee= tblView.getSelectionModel().getSelectedItem();
txtEmployeeName.setText(employee.getName());
Upvotes: -2
Reputation: 189
@pranishres
Here is my try for a cell selection change listener (even if row doesn’t change), inspired by @Java Man's code:
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);
}
});
Upvotes: 2
Reputation: 14806
Ok, lets say you have a data model class named Person
. This way:
Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());
Note that TableView
must take a Person
as a type argument to avoid casting:
@FXML
private TableView<Person> taview;
or
TableView<Person> taview = new TableView<>();
when your row is selected, you will return one Person
instance. Then do what ever you want with that instance.
Upvotes: 96
Reputation: 1860
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);
}
}
});
Using this code you can get the selected value from JAVAFX TABLEVIEW Cell.
Thanks..
Upvotes: 9