急!!!如何用java程序代码实现计算器界面
进口?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+"。");
追加?=?真实;
}
}
}
}