}
} });
}
buttonAdd = new Button(\buttonAdd.addActionListener(this);
buttonAdd.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if (e.getKeyChar() == '+') AddFunction(1); } });
buttonSub = new Button(\
buttonSub.addActionListener(this);
buttonSub.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if (e.getKeyChar() == '-') AddFunction(2); } });
buttonMul = new Button(\buttonMul.addActionListener(this);
buttonMul.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if (e.getKeyChar() == '*') AddFunction(3); } });
buttonDiv = new Button(\
buttonDiv.addActionListener(this);
buttonDiv.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if (e.getKeyChar() == '/') AddFunction(4); } });
buttonDot = new Button(\
buttonDot.addActionListener(this);
buttonDot.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if (e.getKeyChar() == '.') {
}
textBuffer.append(e.getKeyChar()); answerText.setText(textBuffer.toString()); AddNum(); } } });
buttonSign = new Button(\buttonSign.addActionListener(this); buttonEqual = new Button(\buttonEqual.addActionListener(this);
buttonEqual.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if (e.getKeyChar() == '=') OnGo(); } });
buttonSqrt = new Button(\buttonSqrt.addActionListener(this); buttonMod = new Button(\buttonMod.addActionListener(this); buttonReciprocal = new Button(\buttonReciprocal.addActionListener(this);
对菜单的初始化操作
initMenu()函数是对各菜单的初始化,先为其生成实例对象,再添加到MenuBar 的实例对象menuGroup中,MenuItem各项添加到相应的Menu中。
void initMenu() { /* * 先为各个菜单项生成实例对象,并为其设置相应的标签。MenuItem各项 * 还要设置 addActionListener(this) 增加委托事件任务。
*/
menuGroup = new MenuBar(); editMenu = new Menu(\编辑(E)\viewMenu = new Menu(\查看(V)\helpMenu = new Menu(\帮助(H)\
copyItem = new MenuItem(\复制(C) Ctrl+C\
MenuShortcut(KeyEvent.VK_C)); copyItem.addActionListener(this); pasteItem = new MenuItem(\粘贴(P) Ctrl+V\MenuShortcut(KeyEvent.VK_V)); pasteItem.addActionListener(this); standardModel = new MenuItem(\●标准型(T)\
}
standardModel.addActionListener(this);
numGroup = new CheckboxMenuItem(\数字分组(I)\numGroup.addItemListener(this);
aboutCal = new MenuItem(\关于计算器(A)\aboutCal.addActionListener(this);
/* 再把各个菜单相继加入到 MenuBar 中 */ menuGroup.add(editMenu); menuGroup.add(viewMenu); menuGroup.add(helpMenu); editMenu.add(copyItem); editMenu.add(pasteItem);
viewMenu.add(standardModel); viewMenu.add(numGroup); helpMenu.add(aboutCal);
对总框架的总体布局
OverallArrangement() 是根据mainFrame的框架大小,把文本框answerText,内存使用的情况文本框memoryState,内存操作键 MR MS M+ MC,退格键BackSpace清除键 CE ,清空键 C ,以及主键盘区的各键按照一定的比例位置加入到mainFrame中.
void OverallArrangement() { Panel textPanel = new Panel(); Panel upperPanel = new Panel(); Panel centerPanel = new Panel(); Panel mainPanel = new Panel(); Panel leftPanel = new Panel(); Panel rightPanel = new Panel();
//文本框的容器
//计算器上部分的容器 //计算器中部的容器 //主键盘区的容器 //内存区的容器
//数字及相应的操作键盘区
mainFrame.setMenuBar(menuGroup); //为主框架设置菜单栏 mainFrame.add(upperPanel,BorderLayout.NORTH); //把上容器放在主框架的北面 mainFrame.add(centerPanel); //把中容器放在主框架的中部
mainFrame.add(mainPanel,BorderLayout.SOUTH); //把主容器放在主框架的南面 /*设置主框架的上半部分*/ textPanel.add(answerText); upperPanel.add(textPanel);
//把文本框添加到文本容器中 //把文本容器放入上容器中
/*设置主框架的中部*/
//采用流式布局,各组件相互间隔10个像素
centerPanel.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
centerPanel.add(memoryState); //把内存记忆框放在中容器中 centerPanel.add(buttonBackSpace); //把退格键放在中容器中 centerPanel.add(buttonCE); //把清除键放在中容器中 centerPanel.add(buttonC); //把清空键放在中容器中 /*设置主框架的下半部分*/
leftPanel.setLayout(new GridLayout(4,1,0,2)); //左下角的容器采用4*1的网式布局 leftPanel.add(buttonMC); //添加MC leftPanel.add(buttonMR); //添加MR leftPanel.add(buttonMS); //添加MS leftPanel.add(buttonMADD); //添加M+
mainPanel.add(leftPanel,BorderLayout.WEST);//把此容器放在主容器的西面
/*设置主键盘区*/
rightPanel.setLayout(new GridLayout(4,5,3,3)); //采用4*5的网式布局,相互间隔3各像素 /*添加各键*/
rightPanel.add(buttonNum[7]); rightPanel.add(buttonNum[8]); rightPanel.add(buttonNum[9]); rightPanel.add(buttonDiv); rightPanel.add(buttonSqrt); rightPanel.add(buttonNum[4]); rightPanel.add(buttonNum[5]); rightPanel.add(buttonNum[6]);
}
rightPanel.add(buttonMul); rightPanel.add(buttonMod); rightPanel.add(buttonNum[1]); rightPanel.add(buttonNum[2]); rightPanel.add(buttonNum[3]); rightPanel.add(buttonSub);
rightPanel.add(buttonReciprocal); rightPanel.add(buttonNum[0]); rightPanel.add(buttonSign); rightPanel.add(buttonDot); rightPanel.add(buttonAdd); rightPanel.add(buttonEqual);
mainPanel.add(rightPanel,BorderLayout.CENTER);
计算器构造函数是对各布局函数的调用
SimpleCalculator() { initMainFrame(); initTextField(); initButtons(); initMenu(); OverallArrangement(); reSet(); mainFrame.setVisible(true); }
B) 计算运算部分程序的执行过程:
a) 运算部分变量的定义
stringBuffer textBuffer; //记录数值的字符串 int numDot; //小数点的个数 int operator; //操作符:1-加法 2-减法 3-乘法 4-除法 double firstValue,secondValue,result; //第一、二个数及结果 boolean enterSecond; //是否已经输入了第二个数 int forFirOrSec; //此时输入的是第一个还是第二个数 boolean b_remFir,b_remSec,b_remFun; //指示是否此时还记的上次的数和运算符 int remFun; //记住上次的运算符 double remFir,remSec; // 记住上次参加运算的第一二个数
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java计算器实验报告(2)在线全文阅读。
相关推荐: