JTable Automati c Проблема чтения пустых значений - PullRequest
1 голос
/ 22 апреля 2020

Я читаю значения второго столбца из JTable. Все работает отлично, пока не дойдет до последнего ряда. Когда я читаю значение последней строки из второго столбца, он читает пустую строку из ячейки. Я потратил весь свой день, чтобы найти решение этой проблемы, но, к сожалению, результат оказался неожиданным.

Код приведен ниже.

DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
int rows = Integer.parseInt(jTextField8.getText());
String strArr[] = new String[rows];
int count = 0;
System.out.println("Rows : "+rows);
for(int i=0; i<rows; i++){
    for(int j=0 ; j<3; j++){
        if(j==1){
            System.out.println(" i : "+i+" \tj : "+j);
            strArr[count] = (String)tableModel.getValueAt(i, j);
            System.out.println("Value \t: "+(String)tableModel.getValueAt(i, j));
            count++;
        }
    }
}

Таблица, из которой я читаю значения:

enter image description here

Выход:

enter image description here

1 Ответ

1 голос
/ 22 апреля 2020

Похоже, ваш редактор все еще активен, поэтому значение, введенное вами в редактор, еще не сохранено в TableModel.

В ActionListener вашей кнопки вам нужно добавить logi c like :

if (table.isEditing())
    table.getCellEditor().stopCellEditing();

Или, когда вы создаете таблицу, вы можете использовать:

JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

Проверить: Прекращение редактирования таблицы для получения дополнительной информации.

...