- •Объектно-ориентированное программирование
- •Шаг 4. Настройка надписи.
- •Шаг 5. Настройка кнопок.
- •Шаг 6. Запуск приложения.
- •Шаг 7. Обработка событий цифровых кнопок.
- •Шаг 8. Обработка арифметических операций.
- •Шаг 9. Обработка нажатий на остальные кнопки.
- •Лабораторная работа 2. Создание классов. Конструкторы.
- •Лабораторная работа 3. Создание классов. Наследование и агрегация.
- •Лабораторная работа 4. Моделирование карточной игры на компьютере.
- •Задание.
- •Выполнение.
- •Создание проекта.
- •Создание формы.
- •Размещение элементов управления (эу) на форме.
- •Создание класса карты.
- •Класс Deck.
- •Класс Game
- •Привязка к пользовательскому интерфейсу
- •Лабораторная работа 5. Лабораторная работа Создание игры «Тетрис».
- •Создание панели для отображения действий игры.
- •Лабораторная работа 6. Списки и динамические массивы
Шаг 5. Настройка кнопок.
Сначала изменим текст на кнопках. Это можно сделать либо используя контекстное меню, как мы это делали с надписью, либо выполнив двойной щелчок мышью по кнопке. Измени
те текст на всех кнопках, как показано на рис. 3.
Рисунок
3: Текст на кнопках.
Теперь изменим название переменных для каждой кнопки. Для цифровых кнопок оно будет состоять из слова btи соответствующей цифры. Щелкните правой клавишей мыши на кнопке 0 и в контекстном меню выберитеИзменить имя переменнойи введитеbt0. Проделайте аналогичные операции с остальными кнопками. Для десятичной точки имя будетbtDot, для операций:btPlus, btMinus, btMul, btDiv, для кнопки со знаком равноbtResи для кнопкиСбудетbtClear.
Шаг 6. Запуск приложения.
Нажмите на кнопку Исходный код(рис. 4). В модуле CalcFrame найдите методmain. Скопируйте его содержимое:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new CalcFrame().setVisible(true);
}
});
в метод mainклассаMainнашего проекта.
Запустите проект на выполнение. Как все работает?
Шаг 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');
}
Добейтесь того, чтобы при нажатии на кнопки в любой последовательности вводились только корректные числа.