用Java的GUI制作一个按钮式的计算器,实现加减乘除,清屏,进制转换
时间: 2024-01-02 11:03:04 浏览: 143
以下是一个基于Java GUI的简单计算器示例,具有加、减、乘、除、清屏和进制转换功能:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener {
private JTextField textField;
private JButton button1, button2, button3, button4, button5, button6, button7, button8, button9, button0;
private JButton add, subtract, multiply, divide, clear, convert;
private int num1, num2;
private String operator;
public Calculator() {
setTitle("Calculator");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 4));
textField = new JTextField();
add(textField, BorderLayout.NORTH);
button1 = new JButton("1");
button2 = new JButton("2");
button3 = new JButton("3");
button4 = new JButton("4");
button5 = new JButton("5");
button6 = new JButton("6");
button7 = new JButton("7");
button8 = new JButton("8");
button9 = new JButton("9");
button0 = new JButton("0");
add = new JButton("+");
subtract = new JButton("-");
multiply = new JButton("*");
divide = new JButton("/");
clear = new JButton("C");
convert = new JButton("Convert");
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(add);
panel.add(button4);
panel.add(button5);
panel.add(button6);
panel.add(subtract);
panel.add(button7);
panel.add(button8);
panel.add(button9);
panel.add(multiply);
panel.add(clear);
panel.add(button0);
panel.add(convert);
panel.add(divide);
add(panel);
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);
button0.addActionListener(this);
add.addActionListener(this);
subtract.addActionListener(this);
multiply.addActionListener(this);
divide.addActionListener(this);
clear.addActionListener(this);
convert.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("+")) {
num1 = Integer.parseInt(textField.getText());
operator = "+";
textField.setText("");
} else if (command.equals("-")) {
num1 = Integer.parseInt(textField.getText());
operator = "-";
textField.setText("");
} else if (command.equals("*")) {
num1 = Integer.parseInt(textField.getText());
operator = "*";
textField.setText("");
} else if (command.equals("/")) {
num1 = Integer.parseInt(textField.getText());
operator = "/";
textField.setText("");
} else if (command.equals("C")) {
num1 = 0;
num2 = 0;
operator = "";
textField.setText("");
} else if (command.equals("Convert")) {
num1 = Integer.parseInt(textField.getText());
textField.setText(Integer.toString(num1, 2));
} else {
textField.setText(textField.getText() + command);
}
if (!operator.equals("")) {
if (!textField.getText().equals("")) {
num2 = Integer.parseInt(textField.getText());
}
}
if (command.equals("=")) {
int result = 0;
if (operator.equals("+")) {
result = num1 + num2;
} else if (operator.equals("-")) {
result = num1 - num2;
} else if (operator.equals("*")) {
result = num1 * num2;
} else if (operator.equals("/")) {
result = num1 / num2;
}
textField.setText(Integer.toString(result));
num1 = result;
num2 = 0;
operator = "";
}
}
public static void main(String[] args) {
new Calculator();
}
}
```
这个例子使用JFrame作为主窗口,JPanel包含所有的计算器按钮。在JPanel上设置了一个GridLayout布局,将所有的按钮放置在4行4列的网格中。
通过实现ActionListener接口,我们可以对按钮点击事件进行处理。我们在actionPerformed方法中判断哪个按钮被点击,并根据需要执行不同的操作。在这个例子中,我们使用了整数变量num1、num2和operator来存储计算过程中的值和操作符。
在Clear按钮的点击事件中,我们将所有变量重置为初始值。在Convert按钮的点击事件中,我们将用户输入的十进制数转换为二进制数并显示在文本框中。在运算符按钮的点击事件中,我们将用户输入的第一个数存储在num1中,并将操作符存储在operator中。在等于按钮的点击事件中,我们计算num1和num2的结果,并将结果显示在文本框中。
这只是一个简单的计算器示例,你可以根据自己的需要添加更多的按钮和功能,例如小数的加减乘除、科学计算等。
阅读全文