JTable пользовательская проблема фокуса средства визуализации ячеек - PullRequest
4 голосов
/ 01 сентября 2011

У меня есть такой стол.Во втором столбце используется рендерер JTextField, а в третьем столбце используется рендерер и редактор на основе JPasswordField.

enter image description here

Выглядит хорошо.Но проблема в том, что мы должны ввести значения и нажать «ENTER».На этом изображении я набрал свой пароль, но не нажал Enter.Поэтому, если я нажму кнопку «Сохранить и закрыть», появится сообщение об ошибке, что поле пароля пустое.

Ранее я использовал только JTextFields и JPasswordFields в JTabbedPane, и это работало хорошо.Когда мне приходилось добавлять все больше и больше материала, я заменял его на таблицу, подобную этой.

На данный момент я поставил ярлык, чтобы люди знали, что они должны нажать ENTER. Это нехорошо.Еще одна большая проблема.Atleast in Nimbus Посмотрите и почувствуйте, мы понимаем, что это поле все еще в фокусе.В системном представлении Windows нет большой видимой разницы, является ли поле сфокусированным или нет.

enter image description here

Мне нужно поле Имя пользователя или поле пароля, чтобы установить его значение, когда я нажимаю «Сохранить».& Закрыть 'кнопка.Пожалуйста, помогите мне.

Ответы [ 2 ]

7 голосов
/ 01 сентября 2011

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

С помощью вашей кнопки вы можете получить ячейку, которая редактируется с помощью
TableCellEditor cellEditor = table.getCellEditor();
, затем вы можете остановить редактирование с помощью
if(cellEditor!=null){<br> cellEditor.stopCellEditing();<br> }
и затем вы можете сохранить значение

6 голосов
/ 01 сентября 2011

Скажите, чтобы таблица автоматически фиксировалась при потере фокуса:

table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
...