JavaFX TableView, как получить данные ячейки?

Я использую этот метод для получения всего объекта.

tableView.getSelectionModel().getSelectedItem()

Как я могу получить данные из одной ячейки? введите описание изображения здесь
Я имею в виду получить S20BJ9DZ300266 как строку?


person sashaaero    schedule 17.03.2015    source источник


Ответы (6)


Предполагая, что вы знаете, что что-то выбрано, вы можете сделать

TablePosition pos = table.getSelectionModel().getSelectedCells().get(0);
int row = pos.getRow();

// Item here is the table view type:
Item item = table.getItems().get(row);

TableColumn col = pos.getTableColumn();

// this gives the value in the selected cell:
String data = (String) col.getCellObservableValue(item).getValue();
person James_D    schedule 17.03.2015
comment
Круто спас меня. - person I.Tyger; 27.02.2019

Предполагая, что вы не выбрали ни одной строки, но знаете, где и что вы хотите....

// Item here is the table view type:
    Unpaid item = userTable.getItems().get(0);

    TableColumn col = userTable.getColumns().get(3);

    // this gives the value in the selected cell:
    String data = (String) col.getCellObservableValue(item).getValue();
    JOptionPane.showMessageDialog(null, data);
person Howard J    schedule 28.12.2018

table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue == null) {
                selected.setText("");
                return;
            }
                       System.out.println(newValue.getId());
        });

NB: «getId» — это ваш столбец «получить», а «таблица» — это имя вашего табличного представления.

person Rabie Khoualdia    schedule 03.01.2016
comment
не только почтовый индекс, попробуйте объяснить, что было не так и как это решает проблему - person davejal; 03.01.2016

Я решил это. Я получаю строку, например, "[1, proofedor1, calzado1, Rojo, 39, 600, 2, 1200]", и получаю первую ячейку (id) с подстрокой. Салудос

TablePosition pos = (TablePosition) tableVenta.getSelectionModel().getSelectedCells().get(0);
int index = pos.getRow();
String selected = tableVenta.getItems().get(index).toString();
selected = selected.substring(1, selected.indexOf(","));
System.out.println(selected);
person Nicolas Angelico    schedule 01.04.2017

Если вы используете построитель сцен, добавьте метод в On Edit Commit для определенного столбца и добавьте логику в класс контроллера. Используйте event.getNewValue(), чтобы получить новое значение, введенное пользователем. Например.

@FXML
private void UpdateName(TableColumn.CellEditEvent<ModelClass, String> event) {
    ModelClass mc = Table.getSelectionModel().getSelectedItem();
    mc.setName(event.getNewValue());
    System.err.println("new value "+event.getNewValue());
}

Используйте это, когда вы разрешаете редактируемые столбцы

person Reuben Frimpong    schedule 24.09.2018

вы можете использовать этот код, я думаю, что он работает

String a=personTable.getColumns().get(0).getCellObservableValue(0).getValue().toString(); 
System.out.println("value"+a);
person Samer    schedule 07.09.2019