Не сохраняет значение ячейки - PullRequest
2 голосов
/ 25 августа 2010

Опубликовано CellEditor.

import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;

public class UserCellEditor extends AbstractCellEditor 
                            implements TableCellEditor {

    JComponent component = new JTextField();

    public Object getCellEditorValue() {
        return ((JTextField) component).getText();
    }

    public Component getTableCellEditorComponent(JTable table, 
            Object value, boolean isSelected, int row, int column) {
        ((JTextField) component).setText((String) value);
        return component;
    }
}

Тогда я вызываю метод таблицы следующим образом:

UserTable.getColumnModel().getColumn(0).setCellEditor(new UserCellEditor());

Ячейка редактируется, но результат при нажатии клавиши Enter или перемещении в другую ячейку не сохраняется, возвращается исходное значение.

Где я не прав или что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 25 августа 2010

Похоже, что вы редактируете значение в локальном JTextField, в то время как ваша модель данных впоследствии возвращает неизменное значение, когда редактирование завершено. Ваш редактор должен обновить вашу модель, как предложено в этом примере .

0 голосов
/ 09 марта 2011

Если вы устанавливаете CustomTableCellEditor для столбца, этот столбец должен быть обновлен в setValueAt(Object o, int row, int column) соответствующей TableModel, если вы этого не сделаете, новое значение никогда не обновляется. Кстати, если вы определите свой CustomTableCellEditor таким образом:

public class CustomTableCellEditor extends AbstractCellEditor implements TableCellEditor

Вам не нужно запускать события самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...