Java计算器实验报告Word文件下载.docx
《Java计算器实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java计算器实验报告Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
用到的类:
mycal
KeyAdapter
WindowAdapter
MyCal类:
mycal类的属性:
b[];
按钮数组保存各种按键以后放到Panel2中
tf;
文本匡显示输入及运算结果
num1,num2,jieguo运算数
charc,ch;
运算符号,ch为输入的运算符号,c保存ch输入的“+-*/”
Panelp1,p2;
//两个组件p1放文本匡p2放按钮
P2的布局为网格布局5行4列
mycal类的方法:
1.构造方法:
设置标题;
设置文本框;
文本框中添加匿名内置类(KeyAdapter)实现键盘的输入和运算;
将各种组件添加到容器,设置各种按键的颜色;
添加WindowListenr监听器设置关闭按钮;
2.Main方法:
新建一个mycal类;
4.actionPerformed方法:
设置按钮的输入和运算,
当按下运算数将其显示在文本匡中如果之前清零则将零去除
当按下运算符将其保存在c中并将文本匡内容清空
当按下等号判断字符c的符号进行相应的运算并将结果显示在文本框中。
当按下清空按钮将文本框清空,当按下退格按钮取文本框中字符串的字串删除一个符号。
KeyAdapter类:
KeyAdapter类的属性:
mycal类中的属性
KeyAdapter类的方法:
keyPressed()方法
当键盘按下时,判断键盘的输入
当为“+-*/”时记录下num1及c;
当为”=”或“Enter”时记录下num2并将结果计算出来
keyReleased()方法
当键盘松开时,
如果是按下“+-*/”后松开
将文本框清空
如果是按下“=”或“Enter”后松开
将计算结果显示在文本框中
WindowAdapter类:
WindowAdapter类的属性:
WindowEvente
WindowAdapter类的方法:
windowClosing();
设置关闭按钮
、四、源代码
/*
类mycal继承Frame实现了ActionListener接口;
往容器中添加两个组件Panel1,Panel2;
Panel中放置文本匡,Panel2中放置各种按键;
文本匡中以匿名内置类的方式添加键盘监听器实现键盘的输入及运算;
为Panel2中各种按键添加动作监听器实现按键的输入及运算;
*/
importjava.awt.*;
importjava.awt.event.*;
classmycalextendsFrameimplementsActionListener
{
privateButton[]b;
privateTextFieldtf;
privatedoublenum1,num2,jieguo;
//运算数
privatecharc,ch;
//运算符
Panelp1,p2;
//两个组件
publicmycal()
{
setTitle("
MyCalculator1.0"
);
p1=newPanel();
tf=newTextField(25);
tf.addKeyListener(newKeyAdapter(){//添加键盘监听器现键盘的输入及运算
publicvoidkeyPressed(KeyEvente)
{
charch=e.getKeyChar();
if("
+-*/"
.indexOf(ch)!
=-1)
{
num1=Double.parseDouble(tf.getText());
c=ch;
}
if(ch=='
='
|ch==e.VK_ENTER)
num2=Double.parseDouble(tf.getText());
switch(c)
{
case'
+'
:
jieguo=num1+num2;
break;
case'
-'
jieguo=num1-num2;
*'
jieguo=num1*num2;
/'
jieguo=num1/num2;
}
publicvoidkeyReleased(KeyEvente)
tf.setText(null);
|e.getKeyCode()==e.VK_ENTER)
tf.setText(Double.toString(jieguo));
});
p1.add(tf);
add(p1,"
North"
p2=newPanel();
p2.setLayout(newGridLayout(5,4,10,8));
b=newButton[21];
for(inti=1;
i<
21;
i++)
b[i]=newButton();
b[i].setFont(newFont("
仿宋"
0,16));
}
Stringstr1="
/789*456-123+0"
;
b[1].setLabel("
退格"
b[2].setLabel("
清空"
b[3].setLabel("
清零"
for(inti=4;
=17;
b[i].setLabel(str1.charAt(i-4)+"
"
b[18].setLabel("
+/-"
b[19].setLabel("
."
b[20].setLabel("
="
for(inti=1;
{
p2.add(b[i]);
b[i].addActionListener(this);
b[i].setBackground(newColor(20,130,180));
b[i].setForeground(Color.yellow);
4;
i++)
b[i].setBackground(newColor(120,180,170));
b[i].setForeground(Color.blue);
=4;
{b[i*4].setBackground(newColor(120,180,170));
b[i*4].setForeground(Color.red);
b[20].setBackground(Color.red);
add(p2);
//Dimensiondi=this.getPreferredSize();
//System.out.println(di.width+"
"
+di.height);
setBounds(100,200,230,300);
setVisible(true);
addWindowListener(newWindowAdapter(){//设置关闭按钮
publicvoidwindowClosing(WindowEvente)
{
e.getWindow().setVisible(false);
e.getWindow().dispose();
System.exit(0);
}
});
publicstaticvoidmain(Stringargs[])
newmycal();
publicvoidactionPerformed(ActionEvente)//为Panel2中各种按键添加动作监听器实现按键的输入及运算;
Stringstr=e.getActionCommand().trim();
if("
0123456789."
.indexOf(str)!
if(tf.getText().equals("
0"
))tf.setText(null);
tf.setText(tf.getText()+str);
return;
num1=Double.parseDouble(tf.getText());
c=str.charAt(0);
tf.setText(null);
elseif(str.equals("
))
num2=Double.parseDouble(tf.getText());
tf.setText(Double.toString(jieguo));
if(tf.getText().isEmpty()==false)
Doublelnum=-(Double.parseDouble(tf.getText()));
tf.setText(Double.toString(lnum));
else
tf.setText("
-"
tf.setText("
tf.setText(tf.getText().substring(0,tf.getText().length()-1));
}
五、程序运行结果演示
计算器界面
7+8
清空
9*4
7*8
退格
清零
六、总结
通过本次实验让我对Frame类、Panel类、5种布局管理器、文本框、标签及按钮的使用方法,有了进一步的了解。
同时在实验过程中也发现了自己的许多不足,但通过查询对其有有了更深刻大大大的了解.