Завершите работу приложения и перейдите в конструктор экранных форм. Щелкните правой клавишей мыши на кнопке 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');
}
Добейтесь того, чтобы при нажатии на кнопки в любой последовательности вводились только корректные числа.