计算器项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。
项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动;1.Applet容器中组件的添加与设置,包括面板以及菜单的使用;2.容器中组件的布局管理;3.Java核心包中数组、数学计算类的使用;4.异常的处理;5.事件处理模型中的三类对象的使用:1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。
2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。
3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。
6.程序中事件处理的流程:1.计算流程的细化参考代码:import .*;import .*;import .*;importimportimportpublic class Calculatorimplements ActionListener { #############"); dd(panel);panel1 = new JPanel();panel2 = new JPanel();(new BorderLayout());键入计算的第一个数字。
\n");("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。
\n");("3. 键入计算的下一个数字。
\n");("4. 输入所有剩余的运算符和数字。
\n");("5. 单击“=”。
\n");aboutCal = new JMenuItem(" 关于计算器(A)");(this);(topHelp);(aboutCal);(editMenu);(viewMenu);(helpMenu);(mainMenu, ;(textAnswer, ;(panel1, ;(new BorderLayout());textMemory = new JTextField(3);(false);(new Color(217, 217, 217));labelMemSpace = new JLabel(" "); buttonBk = new JButton("Backspace");(new Color(255, 0, 0));buttonCe = new JButton("CE");(new Color(255, 0, 0));buttonC = new JButton("C");(new Color(255, 0, 0));(this);(this);(this);(panel2, ;(new FlowLayout);(textMemory);(labelMemSpace);(buttonBk);(buttonCe);(buttonC);panel3 = new JPanel();(panel3, ;button = new JButton[10];for (int i = 0; i < ; i++) { button[i] = new JButton(i));button[i].setForeground(new Color(0, 0, 255)); }buttonMC = new JButton("MC");(new Color(255, 0, 0));buttonMR = new JButton("MR");(new Color(255, 0, 0));buttonMS = new JButton("MS");(new Color(255, 0, 0));buttonMAdd = new JButton("M+");(new Color(255, 0, 0));buttonDot = new JButton(".");(new Color(0, 0, 255));buttonAddAndSub = new JButton("+/-");(new Color(0, 0, 255));buttonAdd = new JButton("+");(new Color(255, 0, 0));buttonSub = new JButton("-");(new Color(255, 0, 0));buttonMul = new JButton("*");(new Color(255, 0, 0));buttonDiv = new JButton("/");(new Color(255, 0, 0));buttonMod = new JButton("%");(new Color(0, 0, 255));buttonSqrt = new JButton("sqrt"); (new Color(0, 0, 255));buttonDao = new JButton("1/x");(new Color(0, 0, 255));buttonEqual = new JButton("=");(new Color(255, 0, 0));ddActionListener(this);(button[8]);button[8].addActionListener(this); (button[9]);button[9].addActionListener(this); (buttonDiv);(this);(buttonSqrt);(this);(buttonMR);(this);(button[4]);button[4].addActionListener(this); (button[5]);button[5].addActionListener(this); (button[6]);button[6].addActionListener(this); (buttonMul);(this);(buttonMod);(this);(buttonMS);(this);(button[1]);button[1].addActionListener(this); (button[2]);button[2].addActionListener(this); (button[3]);button[3].addActionListener(this); (buttonSub);(this);(buttonDao);(this);(buttonMAdd);(this);(button[0]);button[0].addActionListener(this); (buttonAddAndSub);(this);(buttonDot);(this);(buttonAdd);(this);(buttonEqual);(this);;();();}按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.' if (temp == buttonDot && clickable == true) {boolean isDot = false;if ().length() == 0)isDot = true;for (int i = 0; i < ().length(); i++)if ('.' == ().charAt(i)) {isDot = true;break;}if (isDot == false)() + ".");}if ( (temp == buttonAdd || temp == buttonSub || temp == buttonMul || temp == buttonDiv) && clickable == true) {ength(); i++)if ('.' == ().charAt(i)) {isDot = true;break;}harAt(0) == '0' &&().length() == 1) {("零不能求倒数");clickable = false;}else {boolean isDec = true;int i, j, k;String s = (1 / ()));for (i = 0; i < (); i++)if (i) == '.')break;for (j = i + 1; j < (); j++) if (j) != '0') {isDec = false;break;}if (isDec == true) {String stemp = "";for (k = 0; k < i; k++)stemp += (k);(stemp);}else(s);}}||(i) == '-')) {isNumber = false;break;}if (isNumber == true) {ength(); i++)if ('.' == ().charAt(i)) {isDot = true;break;}ength(); i++)if ('.' == ().charAt(i)) {isDot = true;break;}if (memoryi != 0) { //存储中是一个int型数if (isDot == false) //被加数是一个int型数memoryi += ());else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零memoryd = memoryi + ());memoryi = 0;}}elsememoryd += ());}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除 if (temp == buttonBk && clickable == true) {String s = ();("");for (int i = 0; i < () - 1; i++) {char a = (i);() + a);}}//按下'CE'按钮,将当前文本框内数据清除if (temp == buttonCe) {("");clickable = true;}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == buttonC) {vard = answerd = 0;("");clickable = true;}//按下'复制'菜单栏if (temp == copyItem) {copy = ();}//按下'粘贴'菜单栏if (temp == pasteItem) {(copy);}if (temp == sItem) {(panel, "当前是标准型计算器,\n科学型计算器有待更新。