Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
1

Стирать результат работы калькулятора при введении числа

27.02.2015, 20:22. Показов 1488. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть работающий калькулятор

Код 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2015, 20:22
Ответы с готовыми решениями:

При введении больше 20 чисел программа выдает странный результат
#include <iostream> #include <locale> using namespace std; double t1, t2; int main() {...

При введении дробного числа выводить сообщение
как сделать,так что бы когда вводишь n = дробное число(например 2,3) выводилось сообщение "введите...

Вставка формул при введении числа в ячейку
Добрый день! Есть файл в Excel, в котором главная ячейка (A1) и зависимые от нее (B1:E1). В A1...

Найти сумму ряда при введении с клавиатуры числа n
Дан ряд \sum_{n=o}^{k}\frac{{(-1)}^{n}}{(2n+1){2}^{2n+1}} Первое задание: программа без...

3
181 / 180 / 38
Регистрация: 16.06.2010
Сообщений: 511
28.02.2015, 08:14 2
Используй MVC и стеки для калькулятора.
0
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
28.02.2015, 19:20  [ТС] 3
Можно поподробнее?
0
181 / 180 / 38
Регистрация: 16.06.2010
Сообщений: 511
28.02.2015, 22:59 4
Перепутал, не стек, а очередь нужно использовать.
По ходу работы калькулятора, в очередь будут класться числа и операции введенные юзером.
В нужный момент можно получить результат или откатиться.

Добавлено через 4 минуты
Вместо 100500 swith-case-ов или if-ов выручит полиморфизм.
0
28.02.2015, 22:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2015, 22:59
Помогаю со студенческими работами здесь

При введении любого числа выдать количество знаков в нем
Не могу создать программу, где нужно вводить с клавиатуры число - и программа должна показать...

Использование символа-разделителя один раз в Editе при введении дробного числа
Приветик ребятки! 1)Помогите написать процедуру, которая разрешала бы использование...

Сделать так, чтобы при введении с клавиатуры не числа, а символа программа завершалась
Здравствуйте! Помогите начинающему программисту, пожалуйста. Я написал программу, вычисляющую...

Прекратить работу калькулятора при вводе любого символа, кроме числа
Здравствуйте, я все с тем же калькулятором.решил сделать проверку на вводимые данные, т.е. что бы...

Text Box, стирать текст при нажатии мышью
http://s018.***********/i500/1303/c3/4648ec84613d.png Нужно чтоб при нажатие клавиши мыши, текст...

Можно ли в excel данные столбца стирать при закрытии
можно ли в excel данные столбца (Е) стирать при закрытии, но при этом эти данные сохранялись бы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru