急!!!如何用java程序代码实现计算器界面

包裹?jisuanqi _ new

进口?Java . awt . *;

进口?Java . awt . event . *;

公共?班级?极速器_新?器物?动作监听器

{

面板?p 1;//声明面板p1

文本字段?t 1;//语句文本行t1

String[]?标签?=?{"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};//声明标签数组label1来存储按钮上的标签。

按钮[]?b;//声明按钮数组存储16个按钮。

私人?int?我;//声明I供以后使用

私人?字符串?op1?=?"0";//操作数备用

私人?字符串?接线员?=?"+";//操作员待机

私人?布尔?追加?=?假的;//待机

公共?JiSuanQi_new()//构造方法

{

t 1 =新?TextField();//初始化文本行t1

b?=?新的?按钮[label . length];//初始化按钮数组b

p 1 =新建?panel();//初始化面板p1

p1.setLayout(新?GridLayout(4,4,4,4));//让面板选择存储16个按钮(4行4列)的网格布局管理器。

for(int?I = 0;我& ltb .长度;I++)//使用for循环给按钮贴标签,这样每个按钮都可以添加一个事件监听器,在面板p1上可以添加16个按钮。

{

b[i]?=?新的?按钮(标签[I]);//将标签依次放在16按钮上。

b[i]。addActionListener(this);//使每个按钮都添加一个动作事件侦听器。

p 1 . add(b[I]);?//分别给面板p1添加按钮。

}?

框架?f =新?Frame("计算器1.0 ");//初始化窗口F,名称计算器1.0

f.setLayout(新?BorderLayout());//选择窗口的边框布局管理器。

f.add(BorderLayout。北,t 1);//将文本行添加到窗口的北部。

f.add(BorderLayout。中心,p 1);//在窗口中间添加面条条p1。

f.addWindowListener(新?WindowAdapter(){//在窗口f中添加一个窗口事件侦听器。

公共?作废?窗口关闭(WindowEvent?Eve){//运行窗口关闭方法。

system . exit(0);//退出程序

}

});

f.setSize(250,?250);//设置窗口大小

f.setLocation(200,200);

f . set visible(true);//显示窗口

}

公共?静电?作废?main(字符串?args[])

{

新的?JiSuanQi _ new();?//调用构造函数

}

公共?作废?actionPerformed(ActionEvent?ae)?

操作{//按钮。

字符串?comm?=?AE . getactioncommand();//返回与该动作相关的命令字符串,即用户第一次点击了什么按钮。

if("0123456789 "。indexOf(comm)!=-1)//如果相关命令字符串是0到9之间的数字,则执行。

{

if(附加){

字符串?临时工?=?t 1 . gettext();//新数字

t 1 . settext(temp+comm);

}else{?//执行这个,因为此时append为false。

t 1 . settext(comm);?//将文本行t1设置为相关的命令字符串(您按下的按钮代码)。

追加?=真;//此时append=true。如果继续按键,按下数字,就是1。第一新闻不会改变。2.如果第一次不按,会覆盖之前按的数字(也就是缺点:只能算单个数字)。

}

}

不然呢?if((“+-*/”。indexOf(comm)!=-1))//如果相关命令字符串是+-*/之间的数字

{

//保存

//t 1 . settext(comm);

op1?=?t 1 . gettext();//将第一个数赋给op1?

接线员?=?comm//将命令字符串分配给运算符

追加?=?假的;//此时append为false,即如果继续按按钮,如果按数字,则重复上述动作,如果按符号,则覆盖之前的符号。

}

不然呢?If("= ")。equals(comm))//如果按下了=符号,将有条件地执行以下操作。

{

字符串?op2?=?t 1 . gettext();//op2第二个数字

双倍?d1?=?double . parse double(op 1);

双倍?d2?=?double . parse double(op2);

if(operator . equals("+"){

d1?=?d1?+?d2?;

}别的?if(operator . equals("-"){

d1?=?d1?-?D2;

}别的?if(operator . equals(" *)){

d1?=?d1?*?D2;

}别的?{

d1?=?d1?/?D2;

}

t 1 . settext(d 1+" ");//显示计算结果。

追加?=?假的;

}

不然呢?如果("。"。equals(comm))// If。,继续按。

{

字符串?临时工?=?t 1 . gettext();

if(temp.indexOf(" . ")==-1){

t1.setText(temp+"。");

追加?=?真实;

}

}

}

}