JTable редактор сохраняет старые значения

Хорошо, я заметил проблему с моим редактором в JTable, Сценарий выглядит так:

  • Я редактирую ячейку и ввожу правильное значение, допустим, я ввел
  • Я дважды щелкаю по другой ячейке (которая может быть пустой или нет)
  • Ячейка теперь содержит 42, я могу редактировать это значение, но, как только я дважды щелкну по ячейке 42, находится в ячейке.

Я подозреваю, что мой редактор, потому что, когда я использую DefaultCellEditor нет проблем. Вот его декларация:

public class GlobalEditor extends DefaultCellEditor {
public GlobalEditor(JTable table, JTextField jtf) {
    super(jtf);
    /*
     * Setting font, background/foreground color, center alignement
     */
}

public boolean stopCellEditing() {
    String value = ((JTextField) getComponent()).getText();
    if (!value.equals("")) {
        if (value.length() > 10) {
            ((JComponent) getComponent()).setBorder(new LineBorder(Color.red));
            return false;
        }
    }
    return super.stopCellEditing();
}

@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    JTextField ec = (JTextField) editorComponent;
    if(value != null && value+"" != "---")
        ec.setText(""+value);
    if (isSelected) {
        ec.selectAll();
    }

    return editorComponent;
}

}

Эта линия this.setDefaultEditor(Object.class, new GlobalEditor(this, new JTextField())); устанавливает мой редактор в моем JTable конструктор.

Что мне не хватает?

2 ответа

Решение

Хорошо, это сработало:

JTextField ec = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);

Вместо (и вернуть ec вместо editorComponent):

JTextField ec = (JTextField) editorComponent;

в getTableCellEditorComponent метод.

Любое объяснение приветствуется!

Вы должны переопределить метод getCellEditorValue

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

Также нет необходимости инициализировать GlobalEditor с JTable

Другие вопросы по тегам