Шаг 7. Обработка событий цифровых кнопок

Завершите работу приложения и перейдите в конструктор экранных форм. Щелкните правой клавишей мыши на кнопке 0. В появившемся контекстном меню выберите пункт События (треугольник справа от слова События говорит о том, что этот пункт меню содержит вложенное меню). Вам будет предствалены события ЭУ Кнопка, сгруппированные по категориям. Посмотрите, какие категории событий существуют.

Посмотрите на пункт Action и в нем actionPerformed. Это событие является «основным событием» или «основным действием», у каждого ЭУ оно свое (у некоторых ЭУ его нет, например у Надписи). Для кнопки actionPerformed соответствует нажатию на кнопку. Выберите пункт Action и в нем actionPerformed. В результате у вас будет создан новый метод:

private void bt0ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

}

который будет автоматически вызван при нажатии на кнопку. Создайте аналогичные методы для всех цифровых кнопок и десятичной точки (для чего переходим в конструктор, нажимаем правой клавишей мыши на кнопку 1, выбираем пункт Action и в нем actionPerformed и т. д.).

После этого необходимо написать содержимое этих методов, а для этого нужно проанализировать, что должно происходить при нажатии на цифровую кнопку. При нажатии на цифровую кнопку, нажатая цифра должна добавиться справа к уже имеющимся на экране калькулятора (объекте lbScreen). Однако поведение цифры 0 и десятичной точки будут несколько отличатьтся от обычных цифр. Подумайте и определите как.

Поскольку действия при нажатии на цифровые кнопки однотипные и различаются только нажатой цифрой, то имеет смысл написать вспомогательный метод, который в качестве параметра будет принимать цифру и добавлять ее к надписи (на экран нашего калькулятора). Такой подход избавит нас от написания лишнего кода.

private void numAction(char ch){

//...

}

Обратите внимание на два момента. Во-первых, метод объявлен как закрытый (private), поскольку мы не будем его вызывать из методов других классов. Он нам нужен для обработки нажатия на цифровые кнопки. Во-вторых, цифра нажатой кнопки передается в качестве параметра как символ (char ch). Это сделано для упрощения, т. к. набираемое число на экране в объекте lbScreen хранится в виде строки, а добавлять к строке символ удобнее (при этом читаемость исходного кода не ухудшается).

Общий алгоритм работы данного метода будет следующим:

  • создать переменную StringBuilder:
    StringBuilder curStr;
  • записать в нее строку, находящуюся на экране калькулятора:
    curStr = new StringBuilder(lbScreen.getText());
    lbScreen.getText() - возвращает текст ЭУ Надпись как объект типа String.
  • установить ограничение длины строки (как?);
  • если нажата кнопка 1-9, то просто добавляем ее в конец curStr (как?);
  • если нажата кнопка 0, что нужно делать?
  • если нажата кнопка «десятичная точка», что нужно делать?
  • и в завершении переменную curStr необходимо записать на экран калькулятора:
    lbScreen.setText(curStr.toString());

По данному алгоритму напишите самостоятельно код метода numAction.

Теперь необходимо в методы btXActionPerformed (где Х — цифра кнопки или десятичная точка) написать вызовы метода numAction с нужными параметрами. Например, для кнопки 0, это будет выглядеть так:

private void bt0ActionPerformed(java.awt.event.ActionEvent evt) {

numAction('0');

}

Добейтесь того, чтобы при нажатии на кнопки в любой последовательности вводились только корректные числа.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: