JavaGUI设计计算器.docx
- 文档编号:30446316
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:18
- 大小:85.64KB
JavaGUI设计计算器.docx
《JavaGUI设计计算器.docx》由会员分享,可在线阅读,更多相关《JavaGUI设计计算器.docx(18页珍藏版)》请在冰豆网上搜索。
JavaGUI设计计算器
JavaGUI设计
运用JavaSwing技术实现一个简单的“计算器”,界面如下:
以上测试6/3=2.0
主要实现代码如下:
packagedomain;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.awt.*;
importjava.awt.event.*;
publicclasscalculatorextendsJFrameimplementsActionListener{
JFrameframe;
privateJButtonjia=newJButton("+");
privateJButtonjian=newJButton("-");
privateJButtoncheng=newJButton("*");
privateJButtonchu=newJButton("/");
privateJButtonqiuyi=newJButton("%");
privateJButtondeng=newJButton("=");
privateJButtonfu=newJButton("+/-");
privateJButtondian=newJButton(".");
privateJButtonkai=newJButton("sqrt");
privateJButtondiao=newJButton("1/x");
privateTextFieldk1=newTextField();
privateobjConversionconvert=newobjConversion();
JMenuItemcopy,paste,help,about;
JButtonbackspace,ce,c,num0,num1,num2,num3,num4,num5,num6,num7,
num8,num9;
Containercp;
JTextFieldtext;
Stringcopycontent="";
booleanclickable=true,clear=true;
intall=0;
doubleqian;
Stringfuhao;
intfirst=1;
publiccalculator(){
setTitle("计算器");
setSize(400,300);
setLocation(250,200);
text=newJTextField(25);
text.setText("0.");
text.setHorizontalAlignment(JTextField.RIGHT);//从右到左
JPanelcp1=newJPanel();
JPanelcp2=newJPanel();
JPanelcp3=newJPanel();
cp=getContentPane();
cp.add(cp1,"North");
cp.add(cp2,"Center");
cp.add(cp3,"South");
cp1.setLayout(newGridLayout(1,6));
cp2.setLayout(newGridLayout(1,3));
cp3.setLayout(newGridLayout(6,6));
ButtonGroupbtg=newButtonGroup();
JTextFieldt3=newJTextField(25);
cp1.add(text);
text.setEditable(false);
text.setBackground(newColor(255,255,255));
backspace=newJButton("Backspace");
backspace.setForeground(newColor(255,0,0));
backspace.addActionListener(this);
ce=newJButton("CE");
ce.setForeground(newColor(255,0,0));
ce.addActionListener(this);
c=newJButton("C");
c.setForeground(newColor(255,0,0));
c.addActionListener(this);
k1.setVisible(false);
cp2.add(k1);
cp2.add(backspace);
cp2.add(ce);
cp2.add(c);
num0=newJButton("0");
num1=newJButton("1");
num2=newJButton("2");
num3=newJButton("3");
num4=newJButton("4");
num5=newJButton("5");
num6=newJButton("6");
num7=newJButton("7");
num8=newJButton("8");
num9=newJButton("9");
cp3.add(num7);
num7.addActionListener(this);
cp3.add(num8);
num8.addActionListener(this);
cp3.add(num9);
num9.addActionListener(this);
cp3.add(num6);
num6.addActionListener(this);
cp3.add(num5);
num5.addActionListener(this);
cp3.add(num4);
num4.addActionListener(this);
cp3.add(num3);
num3.addActionListener(this);
cp3.add(num2);
num2.addActionListener(this);
cp3.add(num1);
num1.addActionListener(this);
diao.addActionListener(this);
cp3.add(num0);
num0.addActionListener(this);
cp3.add(chu);
chu.setForeground(newColor(255,0,0));
chu.addActionListener(this);
cp3.add(kai);
kai.addActionListener(this);
cp3.add(cheng);
cheng.setForeground(newColor(255,0,0));
cheng.addActionListener(this);
cp3.add(qiuyi);
qiuyi.addActionListener(this);
cp3.add(jian);
jian.setForeground(newColor(255,0,0));
jian.addActionListener(this);
cp3.add(diao);
cp3.add(fu);
fu.addActionListener(this);
cp3.add(dian);
dian.addActionListener(this);
cp3.add(jia);
jia.setForeground(newColor(255,0,0));
jia.addActionListener(this);
cp3.add(deng);
deng.setForeground(newColor(255,0,0));
deng.addActionListener(this);
JMenuBarmainMenu=newJMenuBar();
setJMenuBar(mainMenu);
JMenueditMenu=newJMenu("编辑");
JMenuhelpMenu=newJMenu("帮助");
mainMenu.add(editMenu);
mainMenu.add(helpMenu);
copy=newJMenuItem("复制");
paste=newJMenuItem("粘贴");
KeyStrokecopyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,
Event.CTRL_MASK);
copy.setAccelerator(copyks);//设置退出菜单选项加上快捷键
KeyStrokepasteks=KeyStroke.getKeyStroke(KeyEvent.VK_V,
Event.CTRL_MASK);
paste.setAccelerator(pasteks);//设置退出菜单选项加上快捷键
editMenu.add(copy);
editMenu.add(paste);
copy.addActionListener(this);
paste.addActionListener(this);
help=newJMenuItem("帮助主题");
about=newJMenuItem("关于计算器");
helpMenu.add(help);
helpMenu.add(about);
help.addActionListener(this);
about.addActionListener(this);
addWindowListener(newWindowDestroyer());//结束窗口
}
publicvoidactionPerformed(ActionEvente)
{//响应动作代码
if(first==1)
text.setText("");
first=0;//第一次把文本框0.清空
Objecttemp=e.getSource();
if(temp==copy){
copycontent=text.getText();
}
if(temp==paste){
text.setText(text.getText()+copycontent);
}
if(temp==help){//打开系统帮助文件要查资料
try{
StringfilePath="C:
/WINDOWS/Help/calc.chm";
Runtime.getRuntime().exec("cmd.exe/c"+filePath);
}catch(Exceptioneeee){
System.out.println("打开系统的计算器出错");
}
}
if(temp==about){
JOptionPane.showMessageDialog(frame,
"Java计算器\n\n07计算机3班20072481刘学龙","关于计算器",
JOptionPane.INFORMATION_MESSAGE);
}
try{
Stringdec=text.getText();
num2.setEnabled(true);
num3.setEnabled(true);
num4.setEnabled(true);
num5.setEnabled(true);
num6.setEnabled(true);
num7.setEnabled(true);
num8.setEnabled(true);
num9.setEnabled(true);
}catch(Exceptionee){
System.out.println("转换出错,可能你没有输入任何字符");
text.setText("转换出错");
clear=false;
}
if(temp==backspace){//退格
Strings=text.getText();
text.setText("");
for(inti=0;i chara=s.charAt(i); text.setText(text.getText()+a); } } if(temp==ce){ text.setText("0."); clear=true; first=1; } if(temp==c){ text.setText("0."); ; clear=true; first=1; } if(temp==num0){ if(clear==false)//判断是否点击了符号位 text.setText(""); text.setText(text.getText()+"0"); } if(temp==num1){ if(clear==false) text.setText(""); text.setText(text.getText()+"1"); clear=true;//第二次不在清空(前二句) } if(temp==num2){ if(clear==false) text.setText(""); text.setText(text.getText()+"2"); clear=true; } if(temp==num3){ if(clear==false) text.setText(""); text.setText(text.getText()+"3"); clear=true; } if(temp==num4){ if(clear==false) text.setText(""); text.setText(text.getText()+"4"); clear=true; } if(temp==num5){ if(clear==false) text.setText(""); text.setText(text.getText()+"5"); clear=true; } if(temp==num6){ if(clear==false) text.setText(""); text.setText(text.getText()+"6"); clear=true; } if(temp==num7){ if(clear==false) text.setText(""); text.setText(text.getText()+"7"); clear=true; } if(temp==num8){ if(clear==false) text.setText(""); text.setText(text.getText()+"8"); clear=true; } if(temp==num9){ if(clear==false) text.setText(""); text.setText(text.getText()+"9"); clear=true; } if(temp==dian){ clickable=true; for(inti=0;i if('.'==text.getText().charAt(i)){ clickable=false; break; }//第一层判断是否里面含有小数点; if(clickable==true)//第二坛判断 text.setText(text.getText()+"."); } try{ if(temp==jia){//加法 qian=Double.parseDouble(text.getText()); fuhao="+"; clear=false; } if(temp==jian){ qian=Double.parseDouble(text.getText()); fuhao="-"; clear=false; ; } if(temp==cheng){ qian=Double.parseDouble(text.getText()); fuhao="*"; clear=false; } if(temp==chu){ qian=Double.parseDouble(text.getText()); fuhao="/"; clear=false; } if(temp==deng){ doubless=Double.parseDouble(text.getText()); text.setText(""); if(fuhao=="+") text.setText(qian+ss+""); if(fuhao=="-") text.setText(qian-ss+""); if(fuhao=="*") text.setText(qian*ss+""); if(fuhao=="/") text.setText(qian/ss+""); clear=false;//要清空前一次的数据 ; } if(temp==kai){ Strings=text.getText(); if(s.charAt(0)=='-'){ text.setText("负数不能开根号"); }else text.setText(Double.toString(java.lang.Math.sqrt(Double .parseDouble(text.getText())))); clear=false; } if(temp==diao){ if(text.getText().charAt(0)=='0' &&text.getText().length()==1){ text.setText("除数不能为零"); }else{ booleanisDec=true; inti,j,k; Strings=Double.toString(1/Double.parseDouble(text .getText())); for(i=0;i if(s.charAt(i)=='.') break; for(j=i+1;j if(s.charAt(j)! ='0'){ isDec=false; break; } if(isDec==true){ Stringstemp=""; for(k=0;k stemp+=s.charAt(k); text.setText(stemp); }else text.setText(s); } clear=false; } if(temp==qiuyi){ text.setText("0"); clear=false; } if(temp==fu){//导师,此方法参考书中例子 booleanisNumber=true; Strings=text.getText(); for(inti=0;i if(! (s.charAt(i)>='0'&&s.charAt(i)<='9' ||s.charAt(i)=='.'||s.charAt(i)=='-')){ isNumber=false; break; } if(isNumber==true){ //如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉 if(s.charA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaGUI 设计 计算器