Напишите приложение, имитирующее калькулятор, используя панель и макет сетки, добавив текстовое поле, 10 цифровых кнопок (0–9), 4 кнопки сложения, вычитания, умножения и деления, кнопку знака равенства, кнопку очистки и квадрат. Корневая кнопка, кнопка возврата, требует, чтобы формула расчета и результаты отображались в текстовом поле, а эффект показан на рисунке ниже.
Код простого калькулятора Java:
импорт javax.swing.*; импорт javax.swing.JTextField; импорт java.awt.*; импорт java.lang.*; импорт открытого класса Ex5_2 расширяет реализации JFrame ActionListener {private JPanel p1 = new JPanel() // Создаем панель Private JPanel p2 = new Private JTextField; t1; //Текстовое поле 1 используется для отображения входной информации Private JTextField t2; //Текстовое поле 2 используется для отображения результирующей информации. Private JLabel label //Информация метки StringBuffer str; //Строка, отображаемая на экране дисплея double x; ,y ; //x и y оба являются операндами int z; //Z указывает, какой оператор был нажат. 0 представляет "+", 1 представляет "-", 2 представляет "/" Private JButton b[ ] = новый JButton[12]; //Создаем массив из 12 кнопок Private JButton b1,b2,b3,b4,b5,b6,b7,b8; //Арифметическая функция button public Ex5_2() { super("Простой калькулятор" ); /Имя окна Контейнер c = getContentPane() //Создаем объект панели контента t1 = new JTextField(30); t1.setEditable(false); //Можно только отображать, нельзя редактировать t2 = new JTextField(30); t2.setEditable(false); //Можно только отображать, нельзя редактировать label = new JLabel("Добро пожаловать в Калькулятор Xiaowu Edition ^_^o~ Работайте усердно!"); label.setForeground(Color.blue); //Создаем пустой строковый буфер str=new StringBuffer(); p2.add(label); //Добавляем надпись на панель p2.add(t2); //Добавляем текстовое поле на панель p2.add(t1); //Добавляем текстовое поле на панель p2.setLayout(new GridLayout(4,1); )); //Установим макет панели в 4 строки и 1 столбец for(int i=0;i<10;i++) //Установим метки для кнопок 0~9 в массиве и зарегистрируем прослушиватели { String s=""+ я; б [я] = новый JButton(s); b[i].addActionListener(this); } //Создание экземпляра каждой кнопки b[10]= new JButton("-/+"); b[11]= new JButton("."); = новая JButton("/"); b2= новая JButton("Назад"); b3= новая JButton("*"); b4= новая JButton("C"); JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("-"); b8= new JButton("="); //Установим цвет переднего плана кнопки for(int i=0); ; i<12;i++) { b[i].setForeground(Color.blue } b1.setForeground(Color.red); b3.setForeground(Color.red); b5.setForeground(Color.red); b7.setForeground(Color.red); b2.setForeground(Color.blue); b6.setForeground(Color.red); b8.setForeground(Color.red); .blue; //Добавляем на панель p1.add(b[7]); p1.add(b[8]); р1.добавить(б[9]); р1.добавить(б2); р1.добавить(б[4]); р1.добавить(б[5]); 6]); p1.add(b3); p1.add(b4); p1.add(b[1]); p1.add(b[3]); p1.добавить(b5); p1.добавить(b6); p1.добавить(b[10]); p1.добавить(b7) ;p1.add(b8); p1.setLayout(new GridLayout(4,5,5,5)); //Регистрируем прослушиватель b[10].addActionListener(this); b[11].addActionListener(это); b2.addActionListener(это); b3.addActionListener(это); b5.addActionListener(это); ) ); b7.addActionListener(это); b8.addActionListener(это); //Добавляем панель на панель содержимого c.add(p1); c.setLayout(new FlowLayout()); //Устанавливаем последовательный макет setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); окно для закрытия Action setVisible(true); //Установить видимость setResizable(false); //Запретить настройку размера кадра setSize(400,300); //Установить размер окна} //Основной метод реализует создание окна public static void main(String[] args) { Ex5_2 f = new Ex5_2() } //Обработка событий кнопки public void actionPerformed(ActionEvent e) { try { if(e.getSource(); )==b4) //Выберите "C", чтобы очистить { t1.setText("0"); //Очищаем текстовое поле t1.setHorizontalAlignment(JTextField.RIGHT); //Выравниваем текст по правому краю str.setLength(0); //Очищаем строковый буфер, чтобы подготовиться к приему новых входных операндов} else if(e.getSource); ()==b[10])//Нажмите «+/-», чтобы выбрать, является ли входной операнд положительным или отрицательным числом{ x=Double.parseDouble(t1.getText().trim());//Функция обрезки предназначена для удаления пробелов в строке t1.setText(""+(-x)); t1.setHorizontalAlignment(JTextField.RIGHT) ; } else if (e.getSource()==b5)//Нажмите кнопку «плюс», чтобы получить значение x и z и очистить значение y{ x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=0; } else if(e.getSource()==b7)//Нажмите, чтобы уменьшить Кнопка получает значение x и z и очищает значение y { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=1; } else if(e.getSource()==b3)//Нажмите кнопку умножения, чтобы получить значение x и z и очистить значение y{ x =Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=2; if(e.getSource()==b1)//Нажмите кнопку деления, чтобы получить значение x и z и очистить значение y{ x=Double.parseDouble(t1.getText().trim()); .setLength(0); y=0d; z=3; } else if(e.getSource()==b8)//Нажмите кнопку со знаком равенства, чтобы вывести результат вычисления { str.setLength(0); switch(z) { случай 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; случай 1: t1.setText(""+(xy)); setHorizontalAlignment(JTextField.RIGHT);break; случай 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; случай 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT) ;перерыв } } еще if(e.getSource()==b[11])//Нажмите кнопку ".", чтобы ввести десятичное число { if(t1.getText().trim().indexOf('.')!=-1) // Определить, содержит ли строка десятичную точку { } else //Если десятичная точка отсутствует { if(t1.getText().trim().equals("0"))//Если она изначально отображается как 0 { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } else if(t1.getText().trim().equals(""))/ /Если изначально отображается как пустое, ничего не делайте {} else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=0d; } else if(e.getSource()==b6) // Найдите квадратный корень { x=Double.parseDouble(t1.getText().trim()); if(x<0) { t1.setText("Исключение формата числа"); t1.setHorizontalAlignment(JTextField.RIGHT } else { t1.setText(""+Math.sqrt(x)); t1.setHorizontalAlignment(JTextField.RIGHT } str); .setLength(0); у=0д } еще { if(e.getSource()==b[0])//Если выбрана цифровая клавиша "0" { if(t1.getText().trim().equals("0"))//Если это так отображается. Если отображение на экране равно нулю, никакая операция не выполняется {} else t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim()); else if (e.getSource()==b2) //Выбрана задняя клавиша { if(! t1.getText().trim().equals("0"))//Если на дисплее не ноль, { if(str.length()!=1) { t1.setText(str.delete(str.length()-1,str.length()).toString());//Может быть выдано исключение выхода за пределы строки t1.setHorizontalAlignment(JTextField.RIGHT) ; } else { t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=Double.parseDouble(t1.getText().trim()); else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT) ; y=Double.parseDouble(t1.getText().trim()); } } } catch(NumberFormatException e1) { t1.setText("Исключение формата числа"); t1.setHorizontalAlignment(JTextField.RIGHT); e1){t1.setText("Индекс строки выходит за пределы"); t1.setHorizontalAlignment(JTextField.RIGHT);} } }Операция рендеринга:
На этом программирование простого калькулятора на Java завершено. Надеюсь, эта статья сможет вдохновить каждого на написание калькуляторов. Это всего лишь простой калькулятор, и вы можете продолжать использовать его для улучшения функций калькулятора.