服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java编写的计算器程序及源代码(1)


  //frame版程序源代码如下,疏漏之处,望批评指正。
//数字分组没有编写,科学型计算器没有编写,其他已经完善。
import java.awt.*;
import java.lang.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.text.decimalformat;
public class calculator
implements actionlistener { //导入动作监听接口
//设计面板中的单位
jframe frame;
jtextfield textanswer;
jpanel panel, panel1, panel2, panel3;
jmenubar mainmenu;
jtextfield textmemory;
jlabel labelmemspace; //labelmemspace单纯做摆设,控制面板的形状
jbutton buttonbk, buttonce, buttonc;
jbutton button[];
jbutton buttonmc, buttonmr, buttonms, buttonmadd;
jbutton buttondot, buttonaddandsub, buttonadd, buttonsub, buttonmul,
buttondiv, buttonmod;
jbutton buttonsqrt, buttondao, buttonequal;
jmenu editmenu, viewmenu, helpmenu;
jmenuitem copyitem, pasteitem, titem, sitem, numbergroup, tophelp, aboutcal;
decimalformat df; //设置数据输出精度
boolean clickable; //控制当前能否按键
double memoryd; //使用内存中存储的数字
int memoryi;
double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)
short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算
string copy; //做复制用
jtextarea help; //帮助
jscrollpane scrollhelp;
//构造函数
public calculator() {
clickable = true;
answerd = 0;
frame = new jframe("计算器");
df = new decimalformat("0.##############"); //设置数据输出精度(对于double型值)
textanswer = new jtextfield(15);
textanswer.settext("");
textanswer.seteditable(false);
textanswer.setbackground(new color(255, 255, 255));
panel = new jpanel();
frame.getcontentpane().add(panel);
panel1 = new jpanel();
panel2 = new jpanel();
panel.setlayout(new borderlayout());
//设计整个面板
mainmenu = new jmenubar();
editmenu = new jmenu("编辑(e)");
viewmenu = new jmenu("查看(v)");
helpmenu = new jmenu("帮助(h)");
copyitem = new jmenuitem(" 复制(c) ctrl+c");
copyitem.addactionlistener(this);
pasteitem = new jmenuitem(" 粘贴(v) ctrl+v");
pasteitem.addactionlistener(this);
editmenu.add(copyitem);
editmenu.add(pasteitem);
titem = new jmenuitem("●标准型(t)");
titem.addactionlistener(this);
sitem = new jmenuitem(" 科学型(s)");
sitem.addactionlistener(this);
numbergroup = new jmenuitem(" 数字分组(i)");
numbergroup.addactionlistener(this);
viewmenu.add(titem);
viewmenu.add(sitem);
viewmenu.add(numbergroup);
tophelp = new jmenuitem(" 帮助主题(h)");
tophelp.addactionlistener(this);
help = new jtextarea(5, 20);
scrollhelp = new jscrollpane(help);
help.seteditable(false);
help.append("执行简单计算/n");
help.append("1. 键入计算的第一个数字。/n");
help.append("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。/n");
help.append("3. 键入计算的下一个数字。/n");
help.append("4. 输入所有剩余的运算符和数字。/n");
help.append("5. 单击“=”。/n");
aboutcal = new jmenuitem(" 关于计算器(a)");
aboutcal.addactionlistener(this);
helpmenu.add(tophelp);
helpmenu.add(aboutcal);
mainmenu.add(editmenu);
mainmenu.add(viewmenu);
mainmenu.add(helpmenu);
panel.add(mainmenu, borderlayout.north);
panel.add(textanswer, borderlayout.center);
panel.add(panel1, borderlayout.south);
panel1.setlayout(new borderlayout());
textmemory = new jtextfield(3);
textmemory.seteditable(false);
textmemory.setbackground(new color(217, 217, 217));
labelmemspace = new jlabel(" ");
buttonbk = new jbutton("backspace");
buttonbk.setforeground(new color(255, 0, 0));
buttonce = new jbutton("ce");
buttonce.setforeground(new color(255, 0, 0));
buttonc = new jbutton("c");
buttonc.setforeground(new color(255, 0, 0));
buttonbk.addactionlistener(this);
buttonce.addactionlistener(this);
buttonc.addactionlistener(this);
panel1.add(panel2, borderlayout.north);
panel2.setlayout(new flowlayout(flowlayout.right));
panel2.add(textmemory);
panel2.add(labelmemspace);
panel2.add(buttonbk);
panel2.add(buttonce);
panel2.add(buttonc);
panel3 = new jpanel();
panel1.add(panel3, borderlayout.center);
button = new jbutton[10];
for (int i = 0; i < button.length; i++) {
button[i] = new jbutton(integer.tostring(i));
button[i].setforeground(new color(0, 0, 255));
}
buttonmc = new jbutton("mc");
buttonmc.setforeground(new color(255, 0, 0));
buttonmr = new jbutton("mr");
buttonmr.setforeground(new color(255, 0, 0));
buttonms = new jbutton("ms");
buttonms.setforeground(new color(255, 0, 0));
buttonmadd = new jbutton("m+");
buttonmadd.setforeground(new color(255, 0, 0));
buttondot = new jbutton(".");
buttondot.setforeground(new color(0, 0, 255));
buttonaddandsub = new jbutton("+/-");
buttonaddandsub.setforeground(new color(0, 0, 255));
buttonadd = new jbutton("+");
buttonadd.setforeground(new color(255, 0, 0));
buttonsub = new jbutton("-");
buttonsub.setforeground(new color(255, 0, 0));
buttonmul = new jbutton("*");
buttonmul.setforeground(new color(255, 0, 0));
buttondiv = new jbutton("/");
buttondiv.setforeground(new color(255, 0, 0));
buttonmod = new jbutton("%");
buttonmod.setforeground(new color(0, 0, 255));
buttonsqrt = new jbutton("sqrt");
buttonsqrt.setforeground(new color(0, 0, 255));
buttondao = new jbutton("1/x");
buttondao.setforeground(new color(0, 0, 255));
buttonequal = new jbutton("=");
buttonequal.setforeground(new color(255, 0, 0));
//将所有行为与监听绑定
panel3.setlayout(new gridlayout(4, 6));
panel3.add(buttonmc);
buttonmc.addactionlistener(this);
panel3.add(button[7]);
button[7].addactionlistener(this);
panel3.add(button[8]);
button[8].addactionlistener(this);
panel3.add(button[9]);
button[9].addactionlistener(this);
panel3.add(buttondiv);
buttondiv.addactionlistener(this);
panel3.add(buttonsqrt);
buttonsqrt.addactionlistener(this);
panel3.add(buttonmr);
buttonmr.addactionlistener(this);
panel3.add(button[4]);
button[4].addactionlistener(this);
panel3.add(button[5]);
button[5].addactionlistener(this);
panel3.add(button[6]);
button[6].addactionlistener(this);
panel3.add(buttonmul);
buttonmul.addactionlistener(this);
panel3.add(buttonmod);
buttonmod.addactionlistener(this);
panel3.add(buttonms);
buttonms.addactionlistener(this);
panel3.add(button[1]);
button[1].addactionlistener(this);
panel3.add(button[2]);
button[2].addactionlistener(this);
panel3.add(button[3]);
button[3].addactionlistener(this);
panel3.add(buttonsub);
buttonsub.addactionlistener(this);
panel3.add(buttondao);
buttondao.addactionlistener(this);
panel3.add(buttonmadd);
buttonmadd.addactionlistener(this);
panel3.add(button[0]);
button[0].addactionlistener(this);
panel3.add(buttonaddandsub);
buttonaddandsub.addactionlistener(this);