日期:2014-05-20 浏览次数:20801 次
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class Calculator extends Frame { private double value = 0.0; private String fuhao = ""; private String valueString = "0"; private int flag = 0; Button[] b = new Button[18]; JPanel jp = new JPanel(); JTextField tf = new JTextField("0", 20); public static void main(String[] args) { Calculator cal = new Calculator(); cal.launchframe(); } public void launchframe() { this.setTitle("计算器 V1.0"); this.setVisible(true); this.setResizable(false); this.setBounds(450, 150, 230, 320); jp.setLayout(new GridLayout(5, 4)); this.add(jp); Draw(); MenuBar mb = new MenuBar(); this.setMenuBar(mb); Menu m1 = new Menu("文件"); Menu m2 = new Menu("帮助"); mb.add(m1); mb.add(m2); MenuItem mi11 = new MenuItem("保存结果"); MenuItem mi12 = new MenuItem("退出"); MenuItem mi2 = new MenuItem("关于计算器"); m1.add(mi11); m1.add(mi12); m2.add(mi2); mi11.addActionListener(new Mb1()); mi12.addActionListener(new Mb1()); mi2.addActionListener(new Mb2()); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void Draw() { String str[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "*", "/", ".", "%", "C", "=", }; for (int i = 0; i < b.length; i++) { b[i] = new Button(str[i]); jp.add(b[i]); b[i].addActionListener(new Btn()); } this.add(tf, BorderLayout.NORTH); } public class Btn implements ActionListener { public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if ("0123456789".indexOf(s) != -1) { if (flag == 1) { flag = 2;//第二次输入数字的时候修改flag的值,影响=号 valueString = "0"; } if (s.equals(".") && valueString.indexOf(".") == -1) { valueString += s; } else { valueString += s;//数字赋值 } if (valueString.startsWith("0")) { valueString = valueString.substring(1);//覆盖初始时的0 } } else if ("+-*/".indexOf(s) != -1) { if (flag == 0) { flag = 1;//第一次输入数字修改flag的值 value = Double.parseDouble(valueString);//value里保存valueString里第一次输入的数值 } else if (flag == 2) { jisuan(valueString, value, fuhao); flag = 1; } fuhao = s; } else if ("=".equals(s)) { if (flag == 2) { jisuan(valueString, value, fuhao); } flag = 0;//初始化 } else if ("C".equals(s)) { value = 0.0; fuhao = ""; valueString = "0"; flag = 0; } showValueString(); } } private void showValueString() { tf.setText(valueString); } private void jisuan(String valueString, double value, String fuhao) { double v = Double.parseDouble(valueString); double sum = 0; if (fuhao == "+") { sum = v + value; } else if (fuhao == "-") { sum = v - value; } else if (fuhao == "*") { sum = v * value; } else if (fuhao == "/") { sum = v % value; } valueString = sum + ""; System.out.println(sum); } class Mb1 implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0); } } class Mb2 extends JFrame implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "", "信息", JOptionPane.PLAIN_MESSAGE); } } }