23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
|
|
1
|
Стирать результат работы калькулятора при введении числа
27.02.2015, 20:22. Показов 1488. Ответов 3
Здравствуйте. Есть работающий калькулятор
Код Calculator.java
Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| import javax.swing.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
public class Calculator
{
// Объявляем и инициализируем компоненты окна
JButton button0 = new JButton("0");
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
JButton button5 = new JButton("5");
JButton button6 = new JButton("6");
JButton button7 = new JButton("7");
JButton button8 = new JButton("8");
JButton button9 = new JButton("9");
JButton buttonPoint = new JButton(".");
JButton buttonEqual = new JButton("=");
JButton buttonPlus = new JButton("+");
JButton buttonMinus = new JButton("-");
JButton buttonDivide = new JButton("/");
JButton buttonMultiply = new JButton("*");
JPanel windowContent = new JPanel();
JTextField displayField = new JTextField(30);
// Конструктор
Calculator()
{
// Установить менеджер расположения для панели
BorderLayout bl = new BorderLayout();
windowContent.setLayout(bl);
// Добавляем дисплей в верхней части окна
windowContent. add("North", displayField);
// Создаем панель с менеджером расположения GridLayout
// в которой будет 12 кнопок - 10 цифр, и
// кнопки “точка” и “равно”
JPanel p1 = new JPanel();
GridLayout gl = new GridLayout(4,3);
p1.setLayout(gl) ;
p1.add(button1);
p1.add(button2);
p1.add(button3);
p1.add(button4);
p1.add(button5);
p1.add(button6);
p1.add(button7);
p1.add(button8);
p1.add(button9);
p1.add(button0);
p1.add(buttonPoint);
p1.add(buttonEqual);
// Добавляем панель p1 в центр окна
windowContent. add("Center", p1);
// Создаем панель с менеджером расположения GridLayout
// на которой будет 4 кнопки -
// Плюс, Минус, Разделить и Умножить
JPanel p2 = new JPanel();
GridLayout gl2 =new GridLayout(4,1);
p2.setLayout(gl2);
p2.add(buttonPlus);
p2.add(buttonMinus);
p2.add(buttonMultiply);
p2.add(buttonDivide);
// Добавляем панель p2 в правую часть окна
windowContent.add("East", p2);
// Создаем frame и добавляем в него содержимое JFrame
JFrame frame = new JFrame("Calculator");
frame.setContentPane(windowContent);
// Устанавливаем размер окна, так чтобы уместились
// все компоненты
frame.pack();
// Показываем окно
frame.setVisible(true);
// Создаем экземпляр слушателя событий и
// регистрируем его в каждой кнопке
CalculatorEngine calcEngine = new CalculatorEngine(this);
button0.addActionListener(calcEngine);
button1.addActionListener(calcEngine);
button2.addActionListener(calcEngine);
button3.addActionListener(calcEngine);
button4.addActionListener(calcEngine);
button5.addActionListener(calcEngine);
button6.addActionListener(calcEngine);
button7.addActionListener(calcEngine);
button8.addActionListener(calcEngine);
button9.addActionListener(calcEngine);
buttonPoint.addActionListener(calcEngine);
buttonPlus.addActionListener(calcEngine);
buttonMinus.addActionListener(calcEngine);
buttonDivide.addActionListener(calcEngine);
buttonMultiply.addActionListener(calcEngine);
buttonEqual.addActionListener(calcEngine);
}
public static void main(String[] args)
{
// Создаем экземпляр класса “Калькулятор”
Calculator calc = new Calculator();
}
} |
|
Код CalculatorEngine
Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
| import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
public class CalculatorEngine implements ActionListener
{
Calculator parent; //ссылка на окно калькулятора
char selectedAction = ' ' ; // +, -, /, или *
double currentResult = 0;
// Конструктор сохраняет ссылку на окно калькулятора
// в переменной экземпляра класса
CalculatorEngine(Calculator parent)
{
this.parent = parent;
}
public void actionPerformed(ActionEvent e)
{
// Получить источник действия
JButton clickedButton = (JButton)e.getSource();
String dispFieldText = parent.displayField.getText();
double displayValue = 0;
// Получить число из дисплея калькулятора,
// если он не пустой.
// Восклицательный знак – это оператор отрицания
if (!"".equals(dispFieldText))
{
displayValue = Double.parseDouble(dispFieldText);
}
Object src = e.getSource();
// Для каждой кнопки арифметического действия
// запомнить его: +, -, /, или *, сохранить текущее число
// в переменной currentResult, и очистить дисплей
// для ввода нового числа
if (src == parent.buttonPlus)
{
selectedAction = '+';
currentResult=displayValue;
parent.displayField.setText("");
}
else if (src == parent.buttonMinus)
{
selectedAction = '-';
currentResult=displayValue;
parent.displayField.setText("");
}
else if (src == parent.buttonDivide)
{
selectedAction = '/';
currentResult = displayValue;
parent.displayField.setText("");
}
else if (src == parent.buttonMultiply)
{
selectedAction = '*' ;
currentResult=displayValue;
parent.displayField.setText("");
}
else if (src == parent.buttonEqual)
{
// Совершить арифметическое действие, в зависимости
// от selectedAction, обновить переменную currentResult
// и показать результат на дисплее
if (selectedAction == '+')
{
currentResult += displayValue;
// Сконвертировать результат в строку, добавляя его
// к пустой строке и показать его
parent.displayField.setText("" + currentResult);
}
else if (selectedAction== '-')
{
currentResult -= displayValue;
parent.displayField.setText("" + currentResult);
}
else if (selectedAction == '/')
{
currentResult /= displayValue;
parent.displayField.setText("" + currentResult);
}
else if (selectedAction== '*')
{
currentResult *= displayValue;
parent.displayField.setText("" + currentResult);
}
}
else
{
// Для всех цифровых кнопок присоединить надпись на
// кнопке к надписи в дисплее
String clickedButtonLabel = clickedButton.getText();
parent.displayField.setText(dispFieldText + clickedButtonLabel);
}
}
} |
|
Подскажите, как доработать калькулятор, чтобы после появления результата (например, нажали 2 + 3 и получили результат 5), при нажатии следующих чисел (например, нажать кнопку с числом 7) результат затирался и появлялось число 7 с возможностью дальнейших действий над ним.
0
|