Даная программа предназначена для выполнения тех же действий , которые выполняет обычный простой калькулятор . В нем находится текстовое поле , предназначенное для ввода 10-х чисел .
На панели расположены 20 кнопок : 10 из них это цифры , а остальные 10 – выполняют такие арифметические действия как:
сложение „ + ” ,
вычитание „ - ” ,
деление „ / ” ,
умножение „ * ” ,
вычисление квадратного корня „ sqrt ” ,
изменение знака „ +/-” , ввод
вещественного числа „ . ” ,
получение результата „ = ” ,
вычисление процента „ % ” ,
сброс „ clear ” .

Программа использует следующие пакеты: java.io.* .* – содержит классы для различных типов ввода-вывода , java.lang.* – содержит классы ядра языка (типы, работа со строками, тригонометрические функции, обработка исключений, легковесные процессы) , java.awt.* – содержит классы для работы с графикой, текстом, окнами и GUI , java.awt.event.* – содержит классы и интерфейсы для обработки событий.
Программа реализуется виде класса Calculator , который расширяет стандартный класс Frame и реализует интерфейс ActionListener .
Класс Calculator содержит поля :
private char savedAction – символ команды .
private boolean clear – переменная, которая показывает, надо ли очищать текстовое поле.
private float savedValue – первый операнд бинарного оператора.
private TextField display – переменная , с помощью которой создается однострочная область для ввода чисел .
private Panel buttonsPanel – переменная , с помощью которой создается панель
private Button buttons[] – массив кнопок
public Calculator() -Конструктор класса .
public Insets insets() - Используется для того, чтобы вставлять в объект Panel границы , напоминающие горизонтальные и вертикальные промежутки между объектами , которые делает диспетчер размещения .
public void windowClosing(WindowEvent ev) - Метод предназначенный для обработки клавиши закрытия окна
private void setupGUI() - Метод который рисует все элементы управления : текстовое поле , кнопки .
public void actionPerformed( ActionEvent e ) - Метод который предназначен для обработки события нажатия кнопки
private void calculate(char cmd) - Метод в котором производятся вычисления
public static void main(String args[]) - Метод предназначенный для запуска программы из командной строки
Создаем текстовое поле и новый объект new Panel(), с помощью класса GridLayout (4,5) задаем количество строк и столбцов
private void setupGUI() {
this.setLayout( new BorderLayout() );
display = new TextField("0");
this.add(display, BorderLayout.NORTH);
buttonsPanel = new Panel();
buttonsPanel.setLayout( new GridLayout(4,5) );
this.add( buttonsPanel, BorderLayout.CENTER );
Создаем массив из 20 кнопок и помещаем их на панель , с помощью метода setLabel присваиваем каждой кнопке надпись.
buttons = new Button[20];
for(int i=0; i<buttons.length; i++){
buttons[i] = new Button();
buttons[i].addActionListener( this );
buttonsPanel.add( buttons[i] ); }
buttons[0].setLabel("7");
buttons[1].setLabel("8");
private void calculate(char cmd)
{
float curValue;
float newValue = 0;
При введении в текстовое поле буквы - считаем, что это НОЛЬ
try{
curValue = (new Float(display.getText())).floatValue();
}
catch(NumberFormatException ep)
{
curValue = 0;
}
Этот фрагмент программы предназначен для операций с одним аргументом
if( savedAction == 0 )
{
clear = true;
savedAction = cmd;
switch(savedAction)
{
case 's':
newValue = (float)Math.sqrt( (double) curValue);
savedAction = 0;
display.setText(""+newValue);
break;
case 'c':
newValue = 0;
savedAction = 0;
display.setText(""+newValue);
break;
case '[':
newValue = - curValue;
savedAction = 0;
display.setText(""+newValue);
break;
}
}
Этот фрагмент программы предназначен для операций с двумя аргументами
switch (savedAction)
{
case '/':
newValue = savedValue / curValue;
break;
case '*':
newValue = savedValue * curValue;
break;
case '-':
newValue = savedValue - curValue;
break;
case '+':
newValue = savedValue + curValue;
break;
case '%':
newValue = savedValue % curValue;
break;
}
В данном фрагменте программы обрабатывается событие закрытия окна .
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0); }
}
1. URL: http://ru.sun.com/java/start/examples/examples.html
2. URL: http://ru.sun.com/java/books/online/index.html
3. URL: http://www.internet-technologies.ru/books/book_12.html
4. URL: http://www.megapolis.org/internet/web_manual/web41.html