import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculators extends JFrame implements ActionListener {
//窗体
public static final int FRAME_W = 300;
public static final int FRAME_H = 300;
//屏幕
public static final int SCREEN_W = Toolkit.getDefaultToolkit().getScreenSize().width;
public static final int SCREEN_H = Toolkit.getDefaultToolkit().getScreenSize().height;
//屏幕居中坐标
public static final int FRAME_x = SCREEN_W - FRAME_W >> 1;
public static final int FRAME_y = SCREEN_H - FRAME_H >> 1;
//上方控件
private final JPanel jp_north = new JPanel();
private final JTextField input_text = new JTextField();
private final JButton c_Btn = new JButton("C");
//功能按键
private final JPanel jp_center = new JPanel();
//构建窗体
public void init() {
this.setTitle("计算器");
this.setSize(300, 300);
this.setLayout(new BorderLayout());
this.setResizable(false);
//居中
this.setLocation(FRAME_x, FRAME_y);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//上方控件,输入/清空
public void addNorthComponent() {
this.input_text.setPreferredSize(new Dimension(230, 30));
input_text.setText("0");
this.input_text.setHorizontalAlignment(JTextField.RIGHT);
jp_north.add(input_text);
this.c_Btn.setForeground(Color.RED);
jp_north.add(c_Btn);
//清空内容
c_Btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
input_text.setText("0");
numberInput = null;
operatorInput = null;
}
});
this.add(jp_north, BorderLayout.NORTH);
}
//功能按键
public void addCenterButton() {
String btn_text = "123+456-789*0.=/";
this.jp_center.setLayout(new GridLayout(4, 4));
for (int i = 0; i < 16; i++) {
String c = btn_text.charAt(i) + "";
JButton btn = new JButton();
btn.setText(c);
btn.addActionListener(this);
jp_center.add(btn);
}
this.add(jp_center,BorderLayout.CENTER);
}
public Calculators() throws HeadlessException {
this.init();
this.addNorthComponent();
this.addCenterButton();
}
public static void main(String[] args) {
Calculators carculator = new Calculators();
carculator.setVisible(true);
}
String numberInput = null;
String operatorInput = null;
//事件监听
@Override
public void actionPerformed(ActionEvent e) {
String clickStr = e.getActionCommand();
String number = ".0123456789";
String operator = "+-*/";
if(number.contains(clickStr)){
if(this.input_text.getText().equals("0")){
this.input_text.setText(clickStr);
}else this.input_text.setText(input_text.getText() + clickStr);
}
else if(operator.contains(clickStr) && numberInput != null){
operatorInput = clickStr;
numberInput = this.input_text.getText();
this.input_text.setText("");
}
else if(clickStr.equals("=") && numberInput != null && operatorInput != null){
Double num1 = Double.valueOf(numberInput);
Double num2 = Double.valueOf(this.input_text.getText());
double sum = 0.0;
switch (operatorInput){
case "+": sum = num1 + num2;break;
case "-": sum = num1 - num2;break;
case "/": if(num2 != 0 )sum = num1 / num2;break;
case "*": sum = num1 * num2;break;
default:break;
}
this.input_text.setText(sum + "");
}
}
}
JAVA-Swing图形化界面之简易计算器
最新推荐文章于 2024-07-30 20:50:32 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)