package Day18; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class CalculatorB implements ActionListener { private JFrame frame; private JTextField field; private JButton clear; private JButton[] allButtons; private double number1 = 0.0, number2 = 0.0; private char operator='0'; public CalculatorB() { frame = new JFrame("Calculator"); frame.setLayout(new BorderLayout());// 布局管理器设置 field = new JTextField(30); field.setText("0"); clear = new JButton("C"); allButtons = new JButton[16]; init(); addEventHandler(); } private void init() { JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); panel.add(field); panel.add(clear); frame.add(panel, "North"); JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayout(4, 4)); String str = "123+456-789*0.=/"; for (int i = 0; i < allButtons.length; i++) {// ///添加按钮 allButtons[i] = new JButton(str.charAt(i) + ""); panel1.add(allButtons[i]); } frame.add(panel1); } private void addEventHandler() { for (int i = 0; i < allButtons.length; i++) { allButtons[i].addActionListener(this); } clear.addActionListener(this); } public void actionPerformed(ActionEvent e) { String str = e.getActionCommand().trim();// 取按键的文本命令 if ("012345689.".indexOf(str) != -1) { // /// if (field.getText().trim().equals("0")) { field.setText(""); } if (field.getText().contains(".") && str.equals(".")) { return; } field.setText(field.getText() + str); return; } if ("+-*/".indexOf(str) != -1) { // /// if (str.indexOf(operator) != -1) { field.setText("0"); return; } number1 = Double.parseDouble(field.getText()); field.setText("0"); operator = str.charAt(0); return; } if (str.equals("=")) { // // number2 = Double.parseDouble(field.getText()); double result = 0.0; switch (operator) { case '+': result = number1 + number2; break; case '-': result = number1 - number2; break; case '*': result = number1 * number2; break; case '/': result = number1 / number2; break; default: break; } long temp=new Double(result).longValue(); if(temp==result){ field.setText(temp + ""); }else { field.setText(result + ""); } operator='0'; return; } if (str.equals("C")) { // // number1 = 0; number2 = 0; operator = '0'; field.setText("0"); return; } } public void showMe() { frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new CalculatorB().showMe(); } }