java计算器实验报告Word文件下载.docx

上传人:b****6 文档编号:19623218 上传时间:2023-01-08 格式:DOCX 页数:45 大小:31.16KB
下载 相关 举报
java计算器实验报告Word文件下载.docx_第1页
第1页 / 共45页
java计算器实验报告Word文件下载.docx_第2页
第2页 / 共45页
java计算器实验报告Word文件下载.docx_第3页
第3页 / 共45页
java计算器实验报告Word文件下载.docx_第4页
第4页 / 共45页
java计算器实验报告Word文件下载.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

java计算器实验报告Word文件下载.docx

《java计算器实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《java计算器实验报告Word文件下载.docx(45页珍藏版)》请在冰豆网上搜索。

java计算器实验报告Word文件下载.docx

FramemainFrame;

//主框架

JTextFieldanswerText;

//显示计算结果

JTextFieldmemoryState;

//显示计算器内存的使用情况

MenuBarmenuGroup;

//菜单栏

MenueditMenu,viewMenu,helpMenu;

//编辑,查看,帮助菜单

MenuItemcopyItem,pasteItem;

//复制,粘贴

MenuItemstandardModel;

//标准型

CheckboxMenuItemnumGroup;

//数字分组

MenuItemaboutCal;

//关于计算器

ButtonbuttonBackSpace,buttonCE,buttonC;

//退格,清除,清空按钮

ButtonbuttonMC,buttonMR,buttonMS,buttonMADD;

//内存操作按钮

ButtonbuttonNum[];

//数字按钮

ButtonbuttonAdd,buttonSub,buttonMul,buttonDiv;

//+,-,*,/

ButtonbuttonDot,buttonSign,buttonEqual;

//.+/-=

ButtonbuttonSqrt,buttonMod,buttonReciprocal;

//sqrt%1/x

c)组件的初始化以及对界面的排版

对主框架的初始化操作

voidinitMainFrame()函数是对主框架进行初始化,设置其框架大小270*250,

初始位置270*250,背景颜色Color.lightGray,是否显示true,能否改变窗口大小false,以及增加了addWindowListener委托事件,当关闭窗口时调用System.exit(0)系统指令,结束程序。

voidinitMainFrame()

{

mainFrame=newFrame("

计算器"

);

mainFrame.setSize(270,250);

mainFrame.setLocation(200,140);

mainFrame.setBackground(Color.lightGray);

mainFrame.setResizable(false);

mainFrame.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

}

对文本框的初始化操作

initTextField()是对文本textBufferanswerTextmemoryState的初始化,

textBuffer是用于对文本的缓冲处理,StringBuffer类优于String类是因为StringBuffer是对字符串直接操作,从而节省了内存。

由于在这个计算器程序中,对字符串的操作量很大,因此,StringBuffer在这方面体现出了其本身的优势。

answerText和memoryState用swing的组件JTextField是因为JTextField显示文本框时可以在文本框的右边显示,符合Windows自带计算器的特点。

answerText和memoryState的背景色为白色,都不能进行编辑。

answerText为右对齐,大小为23个字符,而memoryState为2个字符。

voidinitTextField()

textBuffer=newStringBuffer("

"

answerText=newJTextField(textBuffer.toString(),23);

answerText.setHorizontalAlignment(JTextField.RIGHT);

answerText.setEditable(false);

answerText.setBackground(Color.white);

memoryState=newJTextField

(2);

memoryState.setEditable(false);

memoryState.setBackground(Color.white);

对各按钮的初始化操作

initButtons()函数是对各按钮进行初始化,为每一个按钮增加其标签并增加了addActionListener(this)功能,用于给各按钮增加属性,具体的功能代码,请见actionPerformed(ActionEvente);

其中,数字按钮、四则运算按钮、小数点按钮都增加了键盘输入功能addKeyListener其参数为匿名类KeyListener的适配器newKeyAdapter(),当在键盘上按下相应的键时,为其增加相应的属性功能。

voidinitButtons()

buttonBackSpace=newButton("

BackSpace"

buttonBackSpace.addActionListener(this);

buttonCE=newButton("

CE"

buttonCE.addActionListener(this);

buttonC=newButton("

C"

buttonC.addActionListener(this);

buttonMC=newButton("

MC"

buttonMC.addActionListener(this);

buttonMR=newButton("

MR"

buttonMR.addActionListener(this);

buttonMS=newButton("

MS"

buttonMS.addActionListener(this);

buttonMADD=newButton("

M+"

buttonMADD.addActionListener(this);

buttonNum=newButton[10];

for(inti=0;

i<

buttonNum.length;

i++)

{

buttonNum[i]=newButton(Integer.toString(i));

buttonNum[i].addActionListener(this);

buttonNum[i].addKeyListener(newKeyAdapter(){

publicvoidkeyPressed(KeyEvente){

if(Character.isDigit(e.getKeyChar()))

{

textBuffer.append(e.getKeyChar());

answerText.setText(textBuffer.toString());

AddNum();

}

}

});

}

buttonAdd=newButton("

+"

buttonAdd.addActionListener(this);

buttonAdd.addKeyListener(newKeyAdapter(){

publicvoidkeyPressed(KeyEvente){

if(e.getKeyChar()=='

+'

AddFunction

(1);

buttonSub=newButton("

-"

buttonSub.addActionListener(this);

buttonSub.addKeyListener(newKeyAdapter(){

-'

AddFunction

(2);

buttonMul=newButton("

*"

buttonMul.addActionListener(this);

buttonMul.addKeyListener(newKeyAdapter(){

*'

AddFunction(3);

buttonDiv=newButton("

/"

buttonDiv.addActionListener(this);

buttonDiv.addKeyListener(newKeyAdapter(){

/'

AddFunction(4);

buttonDot=newButton("

."

buttonDot.addActionListener(this);

buttonDot.addKeyListener(newKeyAdapter(){

.'

{

textBuffer.append(e.getKeyChar());

answerText.setText(textBuffer.toString());

AddNum();

buttonSign=newButton("

+/-"

buttonSign.addActionListener(this);

buttonEqual=newButton("

="

buttonEqual.addActionListener(this);

buttonEqual.addKeyListener(newKeyAdapter(){

='

OnGo();

buttonSqrt=newButton("

sqrt"

buttonSqrt.addActionListener(this);

buttonMod=newButton("

%"

buttonMod.addActionListener(this);

buttonReciprocal=newButton("

1/x"

buttonReciprocal.addActionListener(this);

对菜单的初始化操作

initMenu()函数是对各菜单的初始化,先为其生成实例对象,再添加到MenuBar的实例对象menuGroup中,MenuItem各项添加到相应的Menu中。

voidinitMenu()

/*

*先为各个菜单项生成实例对象,并为其设置相应的标签。

MenuItem各项

*还要设置addActionListener(this)增加委托事件任务。

*/

menuGroup=newMenuBar();

editMenu=newMenu("

编辑(E)"

viewMenu=newMenu("

查看(V)"

helpMenu=newMenu("

帮助(H)"

copyItem=newMenuItem("

复制(C)Ctrl+C"

newMenuShortcut(KeyEvent.VK_C));

copyItem.addActionListener(this);

pasteItem=newMenuItem("

粘贴(P)Ctrl+V"

newMenuShortcut(KeyEvent.VK_V));

pasteItem.addActionListener(this);

standardModel=newMenuItem("

●标准型(T)"

standardModel.addActionListener(this);

numGroup=newCheckboxMenuItem("

数字分组(I)"

false);

numGroup.addItemListener(this);

aboutCal=newMenuItem("

关于计算器(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,内存操作键MRMSM+MC,退格键BackSpace清除键CE,清空键C,以及主键盘区的各键按照一定的比例位置加入到mainFrame中.

voidOverallArrangement()

PaneltextPanel=newPanel();

//文本框的容器

PanelupperPanel=newPanel();

//计算器上部分的容器

PanelcenterPanel=newPanel();

//计算器中部的容器

PanelmainPanel=newPanel();

//主键盘区的容器

PanelleftPanel=newPanel();

//内存区的容器

PanelrightPanel=newPanel();

//数字及相应的操作键盘区

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(newFlowLayout(FlowLayout.CENTER,10,10));

centerPanel.add(memoryState);

//把内存记忆框放在中容器中

centerPanel.add(buttonBackSpace);

//把退格键放在中容器中

centerPanel.add(buttonCE);

//把清除键放在中容器中

centerPanel.add(buttonC);

//把清空键放在中容器中

/*设置主框架的下半部分*/

leftPanel.setLayout(newGridLayout(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(newGridLayout(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)运算部分变量的定义

stringBuffertextBuffer;

//记录数值的字符串

intnumDot;

//小数点的个数

intoperator;

//操作符:

1-加法2-减法3-乘法4-除法

doublefirstValue,secondValue,result;

//第一、二个数及结果

booleanenterSecond;

//是否已经输入了第二个数

intforFirOrSec;

//此时输入的是第一个还是第二个数

booleanb_remFir,b_remSec,b_remFun;

//指示是否此时还记的上次的数和运算符

intremFun;

//记住上次的运算符

doubleremFir,remSec;

//记住上次参加运算的第一二个数

booleanisNumGroup=false;

//记录是否为数字分组

booleancanBeBack;

//是否可以使用退格键

doublememory;

//用于内存操作时保存的数据

b)各功能函数简介

reset函数

reSet()是把各属性设置为原始值,当按下

voidreSet()

answerText.setText("

0."

numDot=0;

remFun=operator=0;

firstValue=secondValue=result=0.0;

enterSecond=false;

forFirOrSec=1;

b_remFir=b_remSec=b_remFun=false;

remFir=remSec=0.0;

canBeBack=true;

showScreen函数

showScreen()是当按下了数字键后,在屏幕上显示。

如果有数字分组项,则调用数字分

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1