Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП Лабораторный практикум.doc
Скачиваний:
45
Добавлен:
07.06.2015
Размер:
505.34 Кб
Скачать
      1. Шаг 5. Настройка кнопок.

Сначала изменим текст на кнопках. Это можно сделать либо используя контекстное меню, как мы это делали с надписью, либо выполнив двойной щелчок мышью по кнопке. Измени

те текст на всех кнопках, как показано на рис. 3.

Рисунок 3: Текст на кнопках.

Теперь изменим название переменных для каждой кнопки. Для цифровых кнопок оно будет состоять из слова btи соответствующей цифры. Щелкните правой клавишей мыши на кнопке 0 и в контекстном меню выберитеИзменить имя переменнойи введитеbt0. Проделайте аналогичные операции с остальными кнопками. Для десятичной точки имя будетbtDot, для операций:btPlus, btMinus, btMul, btDiv, для кнопки со знаком равноbtResи для кнопкиСбудетbtClear.

      1. Шаг 6. Запуск приложения.

Нажмите на кнопку Исходный код(рис. 4). В модуле CalcFrame найдите методmain. Скопируйте его содержимое:

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new CalcFrame().setVisible(true);

}

});

в метод mainклассаMainнашего проекта.

Запустите проект на выполнение. Как все работает?

      1. Шаг 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');

}

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