实验六七简单计算器.docx
- 文档编号:3761308
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:13
- 大小:60.57KB
实验六七简单计算器.docx
《实验六七简单计算器.docx》由会员分享,可在线阅读,更多相关《实验六七简单计算器.docx(13页珍藏版)》请在冰豆网上搜索。
实验六七简单计算器
实验六、七图形应用程序设计
本实验需2次上机时间
上机时间:
11月11、18号,星期一。
1、2班11月11、18号下午2:
30-4:
05地点:
科技楼423
3、4班11月11、18号上午8:
10-9:
50地点:
科技楼423
实验目的:
熟悉Swing组件及相关方法:
掌握常用Swing组件的使用方法、组件的事件监听方法以及主要布局管理器的使用。
实验内容:
编写如下图的一个计算器图形界面,并可进行简单的加减乘除运算。
难点参考代码:
1、编写计算器的逻辑程序、包含加减乘除运算。
使用switch语句来选择不同的运算符。
2、编写计算器图形界面、包含文本和按钮
3、为按钮编写响应函数
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.GridLayout;
importjava.awt.Label;
importjava.awt.Panel;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JButton;
importjavax.swing.JDialog;
importjavax.swing.JFrame;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
publicclassCalculatorextendsWindowAdapterimplementsActionListener{
JFrameframe;
JTextFieldshow;
JButtonbc,c,ce,ab,jia,jian,cheng,chu,equ,point,sqrt,ds,bfh,
zf;
//按钮退格,清空,复位,关于,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号
JButtonb[]=newJButton[10];//按钮数组,数字键0~9
doublesum=0,getValue;
inti=0,j=0,p=0,l,action;
JDialogabout;
finalintslength=30;//设置结果显示有效长度
publicvoiddisp(){
frame=newJFrame();
frame.setTitle("xx的个人计算器");
frame.setSize(360,230);
frame.setLocation(380,260);
frame.setBackground(Color.LIGHT_GRAY);
frame.setLayout(newFlowLayout(FlowLayout.CENTER));
frame.setResizable(false);
//计算器disTop模块,包括数字显示文本框、back,ce,c,about按钮
show=newJTextField(31);
show.setText("0");
show.setHorizontalAlignment(SwingConstants.RIGHT);
show.setEditable(false);
frame.add(show);
PaneldispTop=newPanel();
frame.add(dispTop);
dispTop.setLayout(newGridLayout(1,4,3,3));
bc=newJButton("Back");
bc.setForeground(Color.BLUE);
dispTop.add(bc);
ce=newJButton("CE");
ce.setForeground(Color.BLUE);
dispTop.add(ce);
c=newJButton("C");
c.setForeground(Color.BLUE);
dispTop.add(c);
//广告按钮,显示计算器制作者
ab=newJButton("About");
ab.setForeground(Color.BLUE);
dispTop.add(ab);
about=newJDialog(frame,"关于计算器",true);
Labelct=newLabel("本计算器由xx制作",1);
ct.setForeground(Color.RED);
about.add(ct,"Center");
about.setSize(200,100);
about.setLocation(500,300);
//主要按钮显示面板包括disLeft和disRight
PaneldispMain=newPanel();
frame.add(dispMain);
dispMain.setLayout(newGridLayout(1,2,10,10));
//disLeft面板,包括0-9、+/-、。
这十二个按钮
PaneldispLeft=newPanel();
dispMain.add(dispLeft);
dispLeft.setLayout(newGridLayout(4,3,3,3));
PaneldispRight=newPanel();
//disRight面板,包括+、-、*、/、sqrt、%、1/x、=这个人几个按钮
dispMain.add(dispRight);
dispRight.setLayout(newGridLayout(4,2,3,3));
//新建0-9这是个按钮,并将其添加到disLeft中
for(l=9;l>=0;l--){
b[l]=newJButton(String.valueOf(l));
dispLeft.add(b[l]);
b[l].addActionListener(this);
}
//新建其余按钮,并分别将其添加到各自的面板中
jia=newJButton("+");
jia.setForeground(Color.RED);
jian=newJButton("-");
jian.setForeground(Color.RED);
cheng=newJButton("*");
cheng.setForeground(Color.RED);
chu=newJButton("/");
chu.setForeground(Color.RED);
equ=newJButton("=");
equ.setForeground(Color.RED);
point=newJButton(".");
zf=newJButton("+/-");
sqrt=newJButton("sqrt");
bfh=newJButton("%");
ds=newJButton("1/x");
dispRight.add(chu);
dispRight.add(sqrt);
dispRight.add(cheng);
dispRight.add(bfh);
dispRight.add(jian);
dispRight.add(ds);
dispRight.add(jia);
dispRight.add(equ);
dispLeft.add(zf);
dispLeft.add(point);
//为各个按钮绑定监听器
about.addWindowListener(this);
bc.addActionListener(this);
ce.addActionListener(this);
c.addActionListener(this);
ab.addActionListener(this);
jia.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
equ.addActionListener(this);
point.addActionListener(this);
zf.addActionListener(this);
sqrt.addActionListener(this);
bfh.addActionListener(this);
ds.addActionListener(this);
frame.addWindowListener(this);
frame.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
getValue=Double.valueOf(show.getText()).doubleValue();
if(e.getSource()==jia){//加运算,可连加
if(j==0){
sum=getValue;
}elseif(action==1){
sum+=getValue;
}
setSum();
j++;
p=0;
i=0;
action=1;
}elseif(e.getSource()==jian){//减运算,可连减
if(j==0){
sum=getValue;
}elseif(action==2){
sum-=getValue;
}
setSum();
j++;
p=0;
i=0;
action=2;
}elseif(e.getSource()==cheng){//乘运算,可连乘
if(j==0){
sum=getValue;
}elseif(action==3){
sum*=getValue;
}
setSum();
j++;
p=0;
i=0;
action=3;
}elseif(e.getSource()==chu){//除运算,可连除
if(j==0)
sum=getValue;
elseif(action==4){
sum/=getValue;
}
setSum();
j++;
p=0;
i=0;
action=4;
}elseif(e.getSource()==equ){//等号,运算最后一个操作数
switch(action){
case1:
show.setText(String.valueOf(sum+=getValue));
break;
case2:
show.setText(String.valueOf(sum-=getValue));
break;
case3:
show.setText(String.valueOf(sum*=getValue));
break;
case4:
show.setText(String.valueOf(sum/=getValue));
break;
}
setSum();
i=0;
j=0;
action=0;
}elseif(e.getSource()==point){//小数点,只能按一个小数点
if(p==0)
show.setText(show.getText()+e.getActionCommand());
p=1;
}elseif(e.getSource()==c||e.getSource()==ce){//清空与复位
i=0;
j=0;
p=0;
sum=0;
action=0;
show.setText("0");
}elseif(e.getSource()==bc){//退格
Strings=show.getText();
if(s.length()>1){
show.setText("");
for(l=0;l chara=s.charAt(l); show.setText(show.getText()+a); } }else show.setText("0"); }elseif(e.getSource()==ab){//关于 about.setVisible(true); }elseif(e.getSource()==sqrt){//开2次方根 sum=Math.sqrt(getValue); setSum(); i=0; }elseif(e.getSource()==ds){//求倒数 sum=1/getValue; setSum(); i=0; }elseif(e.getSource()==bfh){//百分号 sum=getValue/100; setSum(); i=0; }elseif(e.getSource()==zf){//正负号切换,正号不显示 Strings=show.getText(); chara=s.charAt(0); if(a=='-'){ show.setText(""); for(l=1;l show.setText(show.getText()+s.charAt(l)); } }elseif(getValue! =0){//加上负号 show.setText("-"+s); } } for(l=0;l<10;l++){//0~9数字键触发 if(e.getSource()==b[l]){ if(i==0) show.setText(""); Strings=show.getText(); if(s.length() show.setText(show.getText()+e.getActionCommand()); if(e.getSource()==b[0]&&getValue==0&&p==0) show.setText("0"); if(e.getSource()! =b[0]&&getValue==0&&p==0) show.setText(e.getActionCommand()); i++;//i用来标记数字键触发的状态 } } } publicvoidsetSum(){//把计算结果显示出来 show.setText(String.valueOf(sum)); Strings=show.getText(); chara=s.charAt((s.length()-1)); charb=s.charAt((s.length()-2)); if(a=='0'&&b=='.'){//如果是整数,则去掉后面的小数点和0 show.setText(String.valueOf(Math.round(sum))); } } publicvoidwindowClosing(WindowEvente){ if(e.getSource()==about) about.setVisible(false); elseif(e.getSource()==frame) System.exit(0); } publicstaticvoidmain(Stringargs[]){ newCalculator().disp(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 六七 简单 计算器