编写JFrame程序实现一个计算器,包括十个数字(0-9)按钮和四个运算符(加、减、乘、除)按钮,以及等号和清空两个辅助按钮,还有一个显示输入输出的文本框。程序中使用BorderLayout和GridLayout。
时间: 2024-02-22 15:00:03 浏览: 15
好的,我可以为您提供一个简单的JFrame程序,实现一个计算器。以下是程序代码:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator{
JFrame frame;
JTextField textField;
String input = "";
double num1, num2, result;
char operator;
public Calculator() {
frame = new JFrame("Calculator");
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
textField = new JTextField();
textField.setEditable(false);
panel.add(textField, BorderLayout.NORTH);
JPanel buttonsPanel = new JPanel();
buttonsPanel.setLayout(new GridLayout(4, 4));
JButton b1 = new JButton("1");
JButton b2 = new JButton("2");
JButton b3 = new JButton("3");
JButton b4 = new JButton("4");
JButton b5 = new JButton("5");
JButton b6 = new JButton("6");
JButton b7 = new JButton("7");
JButton b8 = new JButton("8");
JButton b9 = new JButton("9");
JButton b0 = new JButton("0");
JButton bPlus = new JButton("+");
JButton bMinus = new JButton("-");
JButton bMultiply = new JButton("*");
JButton bDivide = new JButton("/");
JButton bClear = new JButton("C");
JButton bEquals = new JButton("=");
buttonsPanel.add(b1);
buttonsPanel.add(b2);
buttonsPanel.add(b3);
buttonsPanel.add(bPlus);
buttonsPanel.add(b4);
buttonsPanel.add(b5);
buttonsPanel.add(b6);
buttonsPanel.add(bMinus);
buttonsPanel.add(b7);
buttonsPanel.add(b8);
buttonsPanel.add(b9);
buttonsPanel.add(bMultiply);
buttonsPanel.add(bClear);
buttonsPanel.add(b0);
buttonsPanel.add(bEquals);
buttonsPanel.add(bDivide);
panel.add(buttonsPanel, BorderLayout.CENTER);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "1";
textField.setText(input);
}
});
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "2";
textField.setText(input);
}
});
b3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "3";
textField.setText(input);
}
});
b4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "4";
textField.setText(input);
}
});
b5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "5";
textField.setText(input);
}
});
b6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "6";
textField.setText(input);
}
});
b7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "7";
textField.setText(input);
}
});
b8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "8";
textField.setText(input);
}
});
b9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "9";
textField.setText(input);
}
});
b0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input += "0";
textField.setText(input);
}
});
bPlus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
num1 = Double.parseDouble(input);
operator = '+';
input = "";
}
});
bMinus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
num1 = Double.parseDouble(input);
operator = '-';
input = "";
}
});
bMultiply.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
num1 = Double.parseDouble(input);
operator = '*';
input = "";
}
});
bDivide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
num1 = Double.parseDouble(input);
operator = '/';
input = "";
}
});
bClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
input = "";
textField.setText("");
}
});
bEquals.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
num2 = Double.parseDouble(input);
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
result = 0;
break;
}
textField.setText(Double.toString(result));
input = "";
}
});
frame.add(panel);
frame.setVisible(true);
}
public static void main(String[] args) {
new Calculator();
}
}
```
这个程序使用BorderLayout来设置文本框和按钮面板的位置,并使用GridLayout来布置按钮。当您按下数字和运算符按钮时,它们将添加到输入字符串中,并显示在文本框中。当您按下等号按钮时,程序将执行相应的算术运算,并将结果显示在文本框中。清空按钮将清除输入字符串和文本框。
希望这个程序可以帮助您实现您自己的计算器!