Listener для jSpinner - действие по нажатию клавиши Enter

374
28 апреля 2017, 17:45

Есть небольшое оконное приложение на Swing. На форме JFrame form расположены текстовые поля и объект jSpinner spinner. При завершении ввода нового значения в spinner по нажатию клавиши Enter значения в текстовых полях должны быть изменены (новые значения берутся из заранее созданной коллекции ArrayList по индексу, зависящему от введённого в spinner значения).

Проблема в навешивании слушателя на нужный объект. Если делать так, как показано в коде ниже, KeyListener работает некорректно: вместо того, чтобы активировать событие, первое нажатие клавиши Enter просто завершает ввод нового значения. Уже только если повторно нажать Enter при активном поле spinner, произойдёт обновление формы.

((JSpinner.DefaultEditor)form.spinner.getEditor()).getTextField()    
.addKeyListener(new SpinnerEnterPressed());

обработчик:

public class SpinnerEnterPressed implements KeyListener
{
    public void keyPressed(KeyEvent evt)
    {
        if(evt.getKeyCode() == KeyEvent.VK_ENTER)
        {
            //обновить значения в форме
            refreshForm();
        }
    }
    public void keyReleased(KeyEvent evt){}
    public void keyTyped(KeyEvent evt){}
}

В принципе можно обойтись навешенным на spinner слушателем ChangeListener, но тогда refreshForm() срабатывает каждый раз при смене значения в поле spinner'a, чего хотелось бы избежать, например, чтобы программа не обновляла лишний раз значения в полях при прокрутке spinner'a стрелочками.
Существует ли рабочее решение для KeyListener?

READ ALSO
Как распарсить такую строку?

Как распарсить такую строку?

У меня есть строка такого типа

453
Семантичная разметка на странице

Семантичная разметка на странице

Делаю сейчас дизайн для сайта и никак не могу определиться с нужными тегами

237
Расширить маску SVG без stretching?

Расширить маску SVG без stretching?

Я пытаюсь создать эффект «источника света» в SVG, посредством чего вырезаю часть темной области, которая будет покрывать изображение

310
Валидация формы на jQuery

Валидация формы на jQuery

Помогите пожалуйста с валидацией формы на jQuery! Чтобы проверялось перед отправкойПри наведении на картинку появлялось окошечко об ошибке

294