1 packagecom.test.JPanel;2
3 importjava.awt.BorderLayout;4 importjava.awt.GridLayout;5 importjava.awt.event.ActionEvent;6 importjava.awt.event.ActionListener;7 importjavax.swing.JButton;8 importjavax.swing.JFrame;9 importjavax.swing.JPanel;10 importjavax.swing.JTextArea;11
12 public class Calculator extendsJFrame {13
14 /**
15 *@paramargs16 *@return
17 *@authorzaj18 *@since2013/10/619 * @20 */
21 JTextArea f1;22 String s = "";23 String s2 = "";24 String a1;25 Double sub1;26 Double sub2;27 String operator;28
29 public class ButtonHandler implementsActionListener {30
31 @Override32 public voidactionPerformed(ActionEvent e) {33 //TODO Auto-generated method stub
34 if (!"CE".equals(e.getActionCommand())35 && !"=".equals(e.getActionCommand())36 && !"+".equals(e.getActionCommand())37 && !"-".equals(e.getActionCommand())38 && !"/".equals(e.getActionCommand())39 && !"*".equals(e.getActionCommand())) {40 System.out.println("action occurred" +e.getActionCommand());41 a1 =e.getActionCommand();42 s = s +String.valueOf(a1);43 if (s2.contains("+") || s2.contains("-") || s2.contains("*")44 || s2.contains("/")) {45 s2 = s2 +a1;46 }47 f1.append(a1);48 } else if ("+".equals(e.getActionCommand())) {49 sub1 =Double.parseDouble(s);50 System.out.println(sub1);51
52 s = s +e.getActionCommand();53 f1.append(e.getActionCommand() + "\n");54 s2 = s.substring(s.length() - 1);55 operator =s2;56 System.out.println("s2==========" +s2);57 } else if ("-".equals(e.getActionCommand())) {58 sub1 =Double.parseDouble(s);59 System.out.println(sub1);60
61 s = s +e.getActionCommand();62 f1.append(e.getActionCommand() + "\n");63 s2 = s.substring(s.length() - 1);64 operator =s2;65 System.out.println("s2==========" +s2);66 } else if ("*".equals(e.getActionCommand())) {67 sub1 =Double.parseDouble(s);68 System.out.println(sub1);69
70 s = s +e.getActionCommand();71 f1.append(e.getActionCommand() + "\n");72 s2 = s.substring(s.length() - 1);73 operator =s2;74 System.out.println("s2==========" +s2);75 } else if ("/".equals(e.getActionCommand())) {76 sub1 =Double.parseDouble(s);77 System.out.println(sub1);78
79 s = s +e.getActionCommand();80 f1.append(e.getActionCommand() + "\n");81 s2 = s.substring(s.length() - 1);82 operator =s2;83 System.out.println("s2==========" +s2);84 } else if ("=".equals(e.getActionCommand())) {85 s2 = s2.substring(1);86 sub2 =Double.parseDouble(s2);87 System.out.println(sub2);88 Double result = 0.0;89 if (operator.equals("+")) {90 result = sub1 +sub2;91 System.out.println(result);92 }93 if (operator.equals("-")) {94 result = sub1 -sub2;95 System.out.println(result);96 }97 if (operator.equals("*")) {98 result = sub1 *sub2;99 System.out.println(result);100 }101 if (operator.equals("/")) {102 result = sub1 /sub2;103 System.out.println(result);104 }105
106 f1.append("\n" +String.valueOf(result));107
108 } else if ("CE".equals(e.getActionCommand())) {109
110 System.out.println(e.getActionCommand());111 s = "";112 s2 = "";113 sub1 = 0.0;114 sub2 = 0.0;115 f1.setText("");116 }117
118 }119
120 }121
122 publicCalculator() {123 setLayout(newBorderLayout());124 f1 = new JTextArea(3, 15);125 add(f1, "North");126 JPanel p1 = newJPanel();127 add(p1, "Center");128
129 p1.setLayout(new GridLayout(5, 4));130 JButton b1 = new JButton("1");131 JButton b2 = new JButton("2");132 JButton b3 = new JButton("3");133 JButton b4 = new JButton("4");134 JButton b5 = new JButton("5");135 JButton b6 = new JButton("6");136 JButton b7 = new JButton("7");137 JButton b8 = new JButton("8");138 JButton b9 = new JButton("9");139 JButton b10 = new JButton("+");140 JButton b11 = new JButton("-");141 JButton b12 = new JButton("*");142 JButton b13 = new JButton("0");143 JButton b14 = new JButton(".");144 JButton b15 = new JButton("=");145 JButton b16 = new JButton("/");146 JButton b17 = new JButton("CE");147
148 b1.addActionListener(newButtonHandler());149 b2.addActionListener(newButtonHandler());150 b3.addActionListener(newButtonHandler());151 b4.addActionListener(newButtonHandler());152 b5.addActionListener(newButtonHandler());153 b6.addActionListener(newButtonHandler());154 b7.addActionListener(newButtonHandler());155 b8.addActionListener(newButtonHandler());156 b9.addActionListener(newButtonHandler());157 b10.addActionListener(newButtonHandler());158 b11.addActionListener(newButtonHandler());159 b12.addActionListener(newButtonHandler());160 b13.addActionListener(newButtonHandler());161 b14.addActionListener(newButtonHandler());162 b15.addActionListener(newButtonHandler());163 b16.addActionListener(newButtonHandler());164 b17.addActionListener(newButtonHandler());165
166 p1.add(b7);167 p1.add(b8);168 p1.add(b9);169 p1.add(b10);170 p1.add(b4);171 p1.add(b5);172 p1.add(b6);173 p1.add(b11);174 p1.add(b1);175 p1.add(b2);176 p1.add(b3);177 p1.add(b12);178 p1.add(b13);179 p1.add(b14);180 p1.add(b15);181 p1.add(b16);182 p1.add(b17);183 }184
185 public static voidmain(String[] args) {186 Calculator window = newCalculator();187 window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);188 window.setSize(480, 260);189 window.setTitle("Calculator-只能计算两数四则运算,使用完需要按“CE”清除");190 //window.pack();
191 window.setVisible(true);192 }193
194 }