Я должен знать это, но по какой-то причине я не могу найти решение. У меня есть модель таблицы, чтобы показать 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!");
}
}