Получение выбранного элемента из JavaFX TableView
Как получить выделенный элемент из TableView
в JavaFX?
В настоящее время я использую
ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();
но это не возвращает мне один выбранный элемент в модели выбора.
Ответы
Ответ 1
Хорошо, скажем, у вас есть класс модели данных с именем Person
. Таким образом:
Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());
Обратите внимание, что TableView
должен принимать Person
как аргумент типа, чтобы избежать кастинга:
@FXML
private TableView<Person> taview;
или
TableView<Person> taview = new TableView<>();
когда ваша строка выбрана, вы вернете один экземпляр Person
. Затем сделайте все, что захотите, с этим экземпляром.
Ответ 2
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);
}
}
});
Используя этот код, вы можете получить выбранное значение из ячейки JAVAFX TABLEVIEW.
Спасибо..
Ответ 3
@pranishres
Вот моя попытка прослушивателя смены выделения ячеек (даже если строка не меняется), вдохновленная кодом @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);
}
});
Ответ 4
если у вас есть класс Bean с именем Employee.
Employee employee= tblView.getSelectionModel().getSelectedItem();
txtEmployeeName.setText(employee.getName());