2015-06-12 1 views
0

У меня есть проблема с получением текущего значения в редактируемом JComboBox в определенном случае: мое приложение создает редактируемый JComboBox со списком предопределенных текстов, так что пользователь может использовать один из предопределенных текстов или другой текст. Затем он может нажимать кнопки, которые будут считывать значение в JComboBox, и будет использовать это значение для выполнения своих действий.Редактируемый JComboBox: получить текущее значение при использовании ярлыков для запуска действий

Это работает большую часть времени, но не в некоторых ситуациях: если пользователь набирает текст без нажатия клавиши «Возврат», а затем активирует кнопку с помощью ярлыка (Alt + ...), я получаю предыдущее значение JComboBox, а не текущий. Если нажата клавиша Return или кнопка активируется нажатием на нее, я получаю правильное значение.

Чтобы прочитать значение, я сначала попробовал JComboBox.getSelectedItem().

Я прочитал следующие темы в stackoverflow How to get value that has been written in editable JComboBox? и Get input values from JComboBox, поэтому я попробовал JComboBox.getEditor(). GetItem(), не видя разницы.

Я также читал How can I know when the text of an editable JComboBox has been changed? и пытался использовать JComboBox.getEditor(). GetEditorComponent(). ToString(): ничего не изменилось.

Любая идея?

Ярлыки были добавлены к кнопкам, используя их InputMap.

ответ

0

Ярлыки были добавлены к кнопкам, используя их InputMap.

Не используйте InputMap.

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

button.setMnemonic(KeyEvent.VK_1); 

поэтому я попытался JComboBox.getEditor() GetItem(), не видя ни разница.

Этот подход работает для меня. Если первое предложение не поможет, разместите свой SSCCE, показывая ваш демо-код.

Смежные вопросы