/*** 一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。 但还不支持键盘操作。*/public classMyCalculator extendsJFrame implementsActionListener {
/** 计算器上的键的显示名字 */private finalString[] KEYS= { "7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};/** 计算器上的功能键的显示名字 */private finalString[] COMMAND= { "Backspace","CE","C"};/** 计算器左边的M的显示名字 */private finalString[] M= { " ","MC","MR","MS","M+"};/** 计算器上键的按钮 */privateJButton keys[] = newJButton[KEYS.length];/** 计算器上的功能键的按钮 */privateJButton commands[] = newJButton[COMMAND.length];/** 计算器左边的M的按钮 */privateJButton m[] = newJButton[M.length];/** 计算结果文本框 */privateJTextField resultText= newJTextField("0");// 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字private booleanfirstDigit= true;// 计算的中间结果。private doubleresultNum= 0.0;// 当前运算的运算符privateString operator= "=";// 操作是否合法private booleanoperateValidFlag= true;/*** 构造函数*/publicMyCalculator() {
super();// 初始化计算器init();// 设置计算器的背景颜色this.setBackground(Color.LIGHT_GRAY);this.setTitle("计算器");// 在屏幕(500, 300)坐标处显示计算器this.setLocation(500,300);// 允许修改计算器的大小this.setResizable(true);// 使计算器中各组件大小合适this.pack();}
/*** 初始化计算器*/private voidinit() {
// 文本框中的内容采用右对齐方式resultText.setHorizontalAlignment(JTextField.RIGHT);// 不允许修改结果文本框resultText