Подтвердить что ты не робот

Получение выбранного элемента из JavaFX TableView

Как получить выделенный элемент из TableView в JavaFX?

В настоящее время я использую

ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();

но это не возвращает мне один выбранный элемент в модели выбора.

4b9b3361

Ответ 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());