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 {
static Calculator cal = new Calculator();
Button[] b = new Button[18];
JPanel jp = new JPanel();
private JTextField tf = new JTextField("0", 10); public static void main(String[] args) { 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));
cal.add(jp);
Draw(); MenuBar mb = new MenuBar();
cal.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());
}
cal.add(tf, BorderLayout.NORTH); } public class Btn implements ActionListener {
private String op1 = "0";
private String operator = "+";
private boolean append = false; public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
if ("0123456789".indexOf(s) != -1) {
if (append) {
String str = tf.getText();
tf.setText(str + e); } else {
tf.setText(s);
op1 = tf.getText();
append = true;
}
} else if ("+-*/".indexOf(s) != -1) {
operator = s;
append = false;
} else if ("=".equals(s)) {
String op2 = tf.getText();
double d1 = Double.parseDouble(op1);
System.out.print(op1 + " ");
double d2 = Double.parseDouble(op2);
System.out.print(op2);
if (operator.equals("+")) {
d1 = d1 + d2;
} else if (operator.equals("-")) {
d1 = d1 - d2;
} else if (operator.equals("*")) {
d1 = d1 * d2;
} else if (operator.equals("/")) {
d1 = d1 / d2;
}
tf.setText(d1 + "");
double str = d1;
append = true;
} else if ("C".equals(s)) {
tf.setText("0");
append = false;
} }
} 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);
}
}
}