📄 calculator.java
字号:
package project.calculator;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Calculator extends JFrame implements ActionListener {
JButton[] buttons; // 0~9的数字按钮
JPanel panel;
JLabel screen; // 显示屏幕
double first_operand, last_operand; // 存放的两个操作数
int operator_kind; // 运算符的类型
public Calculator() {
super("GUI综合实例:我的计算器");
panel = new JPanel();
panel.setLayout(new GridLayout(4,4,0,0));
String str = "789/456*123-0.=+";
buttons = new JButton[16];
for (int i = 0; i < 16; i++) {
buttons[i] = new JButton("" + str.charAt(i));
panel.add(buttons[i]);
buttons[i].addActionListener(this);
}
screen = new JLabel("0");
screen.setFont(new Font("SansSerif", Font.BOLD, 30));
this.setLayout(new BorderLayout());
this.add(screen,BorderLayout.NORTH);
this.add(panel,BorderLayout.CENTER);
this.setSize(400, 400);
this.show();
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int choice = -1;
for (int i = 0; i < buttons.length; i++) {
if (e.getSource() == buttons[i]) {
choice = i;
break;
}
}
switch (choice) {// String str = "789/456*123-0.=+";
case 0:// 数字响应事件
case 1:
case 2:
case 4:
case 5:
case 6:
case 8:
case 9:
case 10:
case 12:
if (screen.getText() == "0")
screen.setText(buttons[choice].getLabel());
else
screen.setText(screen.getText() + buttons[choice].getLabel());
break;
case 13: // 小数点响应事件
if (!screen.getText().contains("."))
screen.setText(screen.getText() + ".");
else
JOptionPane.showMessageDialog(null, "已经有小数点了");
break;
case 3:
case 7:
case 11:
case 15: // 运算符响应事件
operator_kind = (16 - choice) / 4;
first_operand = Double.parseDouble(screen.getText());
screen.setText("0");
break;
case 14: // 等号响应事件
last_operand = Double.parseDouble(screen.getText());
switch (operator_kind) {
case 0:
screen.setText(first_operand + last_operand + "");
break;
case 1:
screen.setText(first_operand - last_operand + "");
break;
case 2:
screen.setText(first_operand * last_operand + "");
break;
case 3:
screen.setText(first_operand / last_operand + "");
break;
}
}
}
public static void main(String[] args) {
new Calculator();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -