Я пишу небольшое приложение, которое использует сканер штрих-кода в качестве входных данных. После некоторого тестирования я остановился на evt.getKeyCode() == KeyEvent.VK_ENTER, чтобы скрыть проверки в БД. Таким образом, пользователь может ввести штрих-код вручную в текстовое поле и нажать клавишу ввода, чтобы отключить проверку БД или использовать сканер, который также автоматически отправляет символ ввода после отправки всех отсканированных символов.java showMessageDialog ввод текста фокус ввода
Если есть проблема со сканированным штрих-кодом, я показываю сообщение об ошибке пользователю, используя JOptionPane.showMessageDialog. Когда пользователь нажимает кнопку ввода, чтобы закрыть диалоговое окно, он снова запускает диалог, как если бы кнопка ввода снова была нажата в текстовом поле. Она переходит в этот цикл, пока пользователь не нажмет кнопку ОК с помощью мыши.
Как я этого избежать ...
есть лучший способ проверить, если сканер полностью отправить все эти символы и начать БД проверку, чем с помощью кнопки ввода
ИЛИ
находится там способ для текстового поля потерять фокус в течение короткого момента, когда диалог показывает и возвращает фокус обратно к нему, когда диалог закрывается (пользователь нажимает на кнопку/нажимает OK/кликает на маленьком «x»).
Мне удалось использовать hasFocus(), чтобы вернуть фокус в текстовое поле, но поскольку у меня только текстовое поле и Jtable на кадре, я немного ограничен. Я попытался настроить фокусировку на Jtable, прежде чем показывать диалог в качестве обходного пути, а затем переориентироваться на текстовое поле, но проблема все еще сохраняется. Даже попытался установить фокус на фрейм, до сих пор не повезло.
любые идеи, пожалуйста?
Если вы покажете свой фрагмент кода, который мы можем запустить сами и увидеть проблему, это будет устранено в незавершенное время ([MCVE] (http://stackoverflow.com/help/mcve)). – user1803551