gitee仓库地址:Calculator: 简单计算器 (gitee.com)https://gitee.com/misaka10000/calculator
常量定义:
package com.wuzihao.calculator; import java.awt.*; public class Constant { public static final String NAME = "简单计算器"; public static final int FRAME_W = 700; public static final int FRAME_H = 700; 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) / 2; public static final int FRAME_Y = (SCREEN_H - FRAME_H) / 2; }
初始化程序:
public void init(){ this.setTitle(Constant.NAME); this.setVisible(true); this.setSize(Constant.FRAME_W, Constant.FRAME_H); this.setLocation(Constant.FRAME_X, Constant.FRAME_Y); this.setLayout(new BorderLayout()); this.setResizable(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
计算器上层组件:
public void Component_North(){ this.textField.setPreferredSize(new Dimension(650,50)); this.jButton.setText("清空"); this.jButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { textField.setText(""); } }); jPanel_north.add(textField); jPanel_north.add(jButton); this.add(jPanel_north,BorderLayout.NORTH); }
计算器主体组件:
public void Component_Center(){ String str = "123+456-789*0.=/"; String regex = "[\\+\\-*=/]"; this.jPanel_Center.setLayout(new GridLayout(4,4)); for (int i = 0; i < 16; i++) { String substring = str.substring(i, i + 1); JButton jButton = new JButton(); jButton.setText(substring); if(substring.matches(regex)){ jButton.setFont(new Font("粗体",Font.BOLD,16)); } jButton.addActionListener(this); jPanel_Center.add(jButton); } this.add(jPanel_Center,BorderLayout.CENTER); }
监听方法实现:
@Override public void actionPerformed(ActionEvent e) { String click = e.getActionCommand(); if(".0123456789".contains(click)){ this.textField.setText(textField.getText() + click); }else if(click.matches("[\\+\\-*/]{1}")){ operator = click; firstInput = this.textField.getText();//保存当前的值 this.textField.setText(""); }else if(click.equals("=")){ Double a = Double.valueOf(firstInput); Double b = Double.valueOf(textField.getText()); Double result = null; switch(operator){ case "+": result = a + b; break; case "-": result = a - b; break; case "*": result = a * b; break; case "/": result = a / b; break; } this.textField.setText(result.toString()); } }
页面效果展示: