编写JFrame程序实现一个计算器,包括十个数字(0-9)按钮和四个运算符(加、减、乘、除)按钮,以及等号和清空两个辅助按钮,还有一个显示输入输出的文本框。程序中使用BorderLayout和GridLayout。
时间: 2024-03-09 12:48:58 浏览: 62
好的,下面是一个简单的实现代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyCalculator extends JFrame implements ActionListener {
private JTextField textField;
private String input = "";
private double num1 = 0, num2 = 0;
private char operator = ' ';
public MyCalculator() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Calculator");
// 创建文本框
textField = new JTextField();
textField.setEditable(false);
// 创建按钮
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 buttonAdd = new JButton("+");
JButton buttonSub = new JButton("-");
JButton buttonMul = new JButton("*");
JButton buttonDiv = new JButton("/");
JButton buttonEq = new JButton("=");
JButton buttonClr = new JButton("C");
// 添加按钮监听器
button0.addActionListener(this);
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
buttonAdd.addActionListener(this);
buttonSub.addActionListener(this);
buttonMul.addActionListener(this);
buttonDiv.addActionListener(this);
buttonEq.addActionListener(this);
buttonClr.addActionListener(this);
// 创建数字按钮面板
JPanel numPanel = new JPanel(new GridLayout(4, 3));
numPanel.add(button1);
numPanel.add(button2);
numPanel.add(button3);
numPanel.add(button4);
numPanel.add(button5);
numPanel.add(button6);
numPanel.add(button7);
numPanel.add(button8);
numPanel.add(button9);
numPanel.add(button0);
numPanel.add(buttonEq);
numPanel.add(buttonClr);
// 创建运算符按钮面板
JPanel opPanel = new JPanel(new GridLayout(4, 1));
opPanel.add(buttonAdd);
opPanel.add(buttonSub);
opPanel.add(buttonMul);
opPanel.add(buttonDiv);
// 创建整体面板
JPanel panel = new JPanel(new BorderLayout());
panel.add(textField, BorderLayout.NORTH);
panel.add(numPanel, BorderLayout.CENTER);
panel.add(opPanel, BorderLayout.EAST);
// 添加面板到窗口
getContentPane().add(panel);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
// 运算符按钮
operator = command.charAt(0);
num1 = Double.parseDouble(input);
input = "";
} else if (command.equals("=")) {
// 等号按钮
num2 = Double.parseDouble(input);
input = "";
double result = 0;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
textField.setText(String.valueOf(result));
} else if (command.equals("C")) {
// 清空按钮
input = "";
num1 = 0;
num2 = 0;
operator = ' ';
textField.setText("");
} else {
// 数字按钮
input += command;
textField.setText(input);
}
}
public static void main(String[] args) {
new MyCalculator();
}
}
```
代码中,我们创建了一个继承自 JFrame 的 MyCalculator 类,实现了 ActionListener 接口的 actionPerformed 方法来处理按钮单击事件。在构造方法中,我们创建了一个文本框和所有的按钮,并将它们添加到面板中,最后将面板添加到窗口中。
当用户单击数字按钮时,程序会将按钮上的数字添加到输入中,并显示在文本框中;当用户单击运算符按钮时,程序会将输入中的数字作为第一个操作数,将运算符保存下来,清空输入;当用户单击等号按钮时,程序会将输入中的数字作为第二个操作数,根据保存的运算符进行计算,将结果显示在文本框中;当用户单击清空按钮时,程序会清空输入、操作数和运算符,将文本框清空。
阅读全文