importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
/**
* 一个计算器,与 Windows 附件自带计算器的标准版功能、界面相仿。但还不支持键
盘操作。
*/
public class Calculator extends JFrame implements ActionListener {
/** 计算器上的键的显示名字 */
private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
/** 计算器上的功能键的显示名字 */
private final String[] COMMAND = { "Backspace", "CE", "C" };
/** 计算器左边的 M 的显示名字 */
private final String[] M = { " ", "MC", "MR", "MS", "M+" };
/** 计算器上键的按钮 */
privateJButton keys[] = new JButton[KEYS.length];
/** 计算器上的功能键的按钮 */
privateJButton commands[] = new JButton[COMMAND.length];
/** 计算器左边的 M 的按钮 */
privateJButton m[] = new JButton[M.length];
/** 计算结果文本框 */
privateJTextFieldresultText = new JTextField("0");
// 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
privatebooleanfirstDigit = true;
// 计算的中间结果。
private double resultNum = 0.0;
// 当前运算的运算符
private String operator = "=";
// 操作是否合法
privatebooleanoperateValidFlag = true;
/**
* 构造函数
*/