Пользовательский редактор ячеек не может вместить текст в Nimbus Look and Feel - PullRequest
1 голос
/ 26 октября 2011

Я хочу проверить пользовательский ввод в ячейке таблицы, и я использую Nimbus Look and Feel.Вот код редактора ячеек, который проверяет целочисленный ввод: WholeNumberField Он расширяет JTextField и добавляет проверку ввода.

Когда я устанавливаю его для столбца, он работает нормально, но можетне помещать текст:

text cut

Когда я использую редактор ячеек по умолчанию, все выглядит нормально:

normal look

Как можноЯ этот редактор похож на редактор по умолчанию?

Ответы [ 3 ]

4 голосов
/ 26 октября 2011

WholeNumberField - старый код. Если вы действительно хотите выполнить пользовательскую проверку, вы должны использовать DocumentFilter .

Однако в этом случае нет необходимости создавать собственный редактор. JTable уже поддерживает редактор для проверки чисел. Вам просто нужно переопределить метод isCellEditable(...) в JTable или TableModel, чтобы вернуть Integer.Class, и будут использованы надлежащий рендер и редактор.

Редактировать: Только что заметил, что мое предложение неверно.

  1. вам нужно переопределить getColumnClass(...), чтобы вернуть Integer.class, чтобы можно было использовать правильный рендерер / редактор.
  2. метод isCellEditable(...) используется для определения возможности редактирования ячейки.
4 голосов
/ 26 января 2012

Я обнаружил, что добавление в конструктор Custom Cell Editor следующего кода решило эту проблему для меня:

Border border = UIManager.getBorder("Table.cellNoFocusBorder");
if (border != null) {
    setBorder(border);
}

Мой редактор расширяет JTextField.

1 голос
/ 26 октября 2011

Если вы получаете экземпляр из TableCellEditor из getDefaultEditor(Object.class), это уже должен быть компонент, который вы можете проверить, как в вашем примере.

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