Получить отредактированные данные в JTable после редактирования? - PullRequest
0 голосов
/ 07 апреля 2020

Я должен знать это, но по какой-то причине я не могу найти решение. У меня есть модель таблицы, чтобы показать CSV-файл, он отображается нормально, но я хочу отредактировать его. Когда я редактирую значение в ячейке, оно просто возвращается обратно. Я понимаю, что это делается getValueAt, поэтому мне нужно получить новое значение из таблицы и поместить его в структуру данных, прежде чем она будет вызвана. Я попытался TableModelListener, но он ничего не делает. В этом примере я просто печатаю в stdout, но tableChanged никогда не вызывается. Как мне сначала получить измененное значение ?? После долгих поисков я попробовал tableCellListener, пользовательский рендерер, пользовательский редактор, похоже, ничего не работает, либо я не могу редактировать поле, либо не могу получить новое значение.

public class CSVFileTable extends AbstractTableModel implements TableModelListener {    

private static final long serialVersionUID = -24798663994677623L;
private CSVFile file;

public CSVFileTable (CSVFile file) {
    this.file = file;   
    addTableModelListener(this);
}


public int getColumnCount()  {return file.getColumnCount(); }
public int getRowCount() { return file.getRowCount(); }
public String getColumnName(int index) { return file.getColumns()[index]; }

public Object getValueAt(int row, int col) {
    return file.getAtRow(col, row);
}

public boolean isCellEditable(int row, int column) { return true; }


@Override
public void tableChanged(TableModelEvent e) {
    System.out.println("Modified!");    
}
}
...