计算器的实现
------------简单计算器的实现--------------
package net.java.t071201; //使用import把JMenuBar引入到当前类,下边时候的时候就不需要在写包名,直接用类名就可以。import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;/** * 定义一个Counter类 * * @author 汤剑男 */ public class Counter {// 主函数public static void main(String[] args) {// 实例化一个对象Counter jf = new Counter();jf.display();}// 定义一个显示方法public void display(){javax.swing.JFrame a = new javax.swing.JFrame("计算器");a.setSize(400, 520);a.setResizable(false);a.setLocationRelativeTo(null);a.setDefaultCloseOperation(2);// java.awt.FlowLayout b =new java.awt.FlowLayout();a.setLayout(null);// 实例化一个菜单栏对象JMenuBar mb = new JMenuBar();// 实例化一个菜单项JMenu menu1 = new JMenu("查看(V)");// 实例化菜单子项JMenuItem menu1Item1 = new JMenuItem("打开");menu1.add(menu1Item1);JMenu menu2 = new JMenu("编辑(E)");JMenu menu3 = new JMenu("帮助(V)");// 把菜单添加到菜单栏中mb.add(menu1);mb.add(menu2);mb.add(menu3);// 设置窗体有菜单栏a.setJMenuBar(mb);// javax.swing.JLabel c = new javax.swing.JLabel("查看(V)");// c.setBounds(20, 0, 60, 30);// a.add(c);// javax.swing.JLabel d = new javax.swing.JLabel("编辑(E)");// d.setBounds(150, 0, 60, 30);// a.add(d);// javax.swing.JLabel e = new javax.swing.JLabel("帮助(H)");// e.setBounds(320, 0, 60, 30);// a.add(e);final javax.swing.JTextField f = new javax.swing.JTextField(20);f.setBounds(20, 20, 360, 80);a.add(f);javax.swing.JButton g = new javax.swing.JButton("MC");// 设置前景色g.setForeground(Color.RED);g.setBounds(10, 120, 60, 40);a.add(g);javax.swing.JButton h = new javax.swing.JButton("MR");h.setBounds(90, 120, 60, 40);a.add(h);javax.swing.JButton i = new javax.swing.JButton("MS");i.setBounds(170, 120, 60, 40);a.add(i);javax.swing.JButton j = new javax.swing.JButton("M+");j.setBounds(250, 120, 60, 40);a.add(j);javax.swing.JButton k = new javax.swing.JButton("M-");k.setBounds(330, 120, 60, 40);a.add(k);javax.swing.JButton g1 = new javax.swing.JButton("<—");g1.setBounds(10, 180, 60, 40);a.add(g1);javax.swing.JButton h1 = new javax.swing.JButton("CE");h1.setBounds(90, 180, 60, 40);a.add(h1);javax.swing.JButton i1 = new javax.swing.JButton("C");i1.setBounds(170, 180, 60, 40);i1.setActionCommand("C");a.add(i1);javax.swing.JButton j1 = new javax.swing.JButton("±");j1.setBounds(250, 180, 60, 40);a.add(j1);javax.swing.JButton k1 = new javax.swing.JButton("√");k1.setBounds(330, 180, 60, 40);a.add(k1);javax.swing.JButton g2 = new javax.swing.JButton("7");g2.setBounds(10, 240, 60, 40);g2.setActionCommand("7");a.add(g2);javax.swing.JButton h2 = new javax.swing.JButton("8");h2.setBounds(90, 240, 60, 40);h2.setActionCommand("8");a.add(h2);javax.swing.JButton i2 = new javax.swing.JButton("9");i2.setBounds(170, 240, 60, 40);i2.setActionCommand("9");a.add(i2);javax.swing.JButton j2 = new javax.swing.JButton("/");j2.setBounds(250, 240, 60, 40);j2.setActionCommand("/");a.add(j2);javax.swing.JButton k2 = new javax.swing.JButton("%");k2.setBounds(330, 240, 60, 40);a.add(k2);javax.swing.JButton g3 = new javax.swing.JButton("4");g3.setBounds(10, 300, 60, 40);g3.setActionCommand("4");a.add(g3);javax.swing.JButton h3 = new javax.swing.JButton("5");h3.setBounds(90, 300, 60, 40);h3.setActionCommand("5");a.add(h3);javax.swing.JButton i3 = new javax.swing.JButton("6");i3.setBounds(170, 300, 60, 40);i3.setActionCommand("6");a.add(i3);javax.swing.JButton j3 = new javax.swing.JButton("*");j3.setBounds(250, 300, 60, 40);j3.setActionCommand("*");a.add(j3);javax.swing.JButton k3 = new javax.swing.JButton("1/x");k3.setBounds(330, 300, 60, 40);a.add(k3);javax.swing.JButton g4 = new javax.swing.JButton("1");g4.setBounds(10, 360, 60, 40);g4.setActionCommand("1");a.add(g4);javax.swing.JButton h4 = new javax.swing.JButton("2");h4.setBounds(90, 360, 60, 40);h4.setActionCommand("2");a.add(h4);javax.swing.JButton i4 = new javax.swing.JButton("3");i4.setBounds(170, 360, 60, 40);i4.setActionCommand("3");a.add(i4);javax.swing.JButton j4 = new javax.swing.JButton("-");j4.setBounds(250, 360, 60, 40);j4.setActionCommand("-");a.add(j4);javax.swing.JButton k4 = new javax.swing.JButton("=");k4.setBounds(330, 360, 60, 100);k4.setActionCommand("=");a.add(k4);javax.swing.JButton g5 = new javax.swing.JButton("0");g5.setBounds(10, 420, 140, 40);g5.setActionCommand("0");a.add(g5);javax.swing.JButton h5 = new javax.swing.JButton(".");h5.setBounds(170, 420, 60, 40);h5.setActionCommand(".");a.add(h5);javax.swing.JButton i5 = new javax.swing.JButton("+");i5.setBounds(250, 420, 60, 40);i5.setActionCommand("+");a.add(i5);ActionListener al = new ActionListener() {public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("=")) {items=1;operation(f);test=5;} else if (e.getActionCommand().equals("+")) {items=1;operation(f);test=1;} else if (e.getActionCommand().equals("-")) {items=1;operation(f);test=2;} else if (e.getActionCommand().equals("*")) {items=1;operation(f);test=3;} else if (e.getActionCommand().equals("/")) {items=1;operation(f);test=4;} else if(e.getActionCommand().equals("C")){f.setText(""); count = 0; items =0; test=0; temp=0;}else {if(items==0){String str = f.getText();str += e.getActionCommand();f.setText(str);// 为什么要把f定义成final}else{f.setText("");String str = e.getActionCommand();f.setText(str);items=0;}}}};i1.addActionListener(al);g2.addActionListener(al);h2.addActionListener(al);i2.addActionListener(al);j2.addActionListener(al);g3.addActionListener(al);h3.addActionListener(al);i3.addActionListener(al);j3.addActionListener(al);g4.addActionListener(al);h4.addActionListener(al);i4.addActionListener(al);j4.addActionListener(al);k4.addActionListener(al);g5.addActionListener(al);h5.addActionListener(al);i5.addActionListener(al);a.setVisible(true);}public final void operation(javax.swing.JTextField f){if (count == 0) {// 得到点击加号之前文本框中的值value1 = f.getText();temp = Integer.parseInt(value1);count++;} else if (count >= 1) {value2 = f.getText();if(test==1){ temp =temp+ Integer.parseInt(value2); f.setText( temp + ""); count++;}else if(test==2){ temp =temp-Integer.parseInt(value2); f.setText( temp + ""); count++;}else if(test==3){temp =temp*Integer.parseInt(value2); f.setText( temp + ""); count++; }else if (test==4){temp =temp/Integer.parseInt(value2); f.setText( temp + ""); count++;}else if (test==5){ f.setText( temp + ""); count++;}}}// 存储值的private String value1;private String value2;// 计数器private int count = 0;private int items =0;private int test=0;private int temp=0;}