站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于计算器的问题??????急 在线等!!!!!!!!!!!!!!!!

关于计算器的问题??????急 在线等!!!!!!!!!!!!!!!!

摘要: 关于计算器的问题??????急 在线等!!!!!!!!!!!!!!!!



import java.awt.*;
import java.awt.event.*;


class Computer extends Frame {

Panel b=new Panel();

Panel h=new Panel();

TextField t=new TextField("",30);

private String name[]={"0","1","2","3","4","5","6","7","8","9","+","-","*","/","=","CE"};
private Button button[]=new Button[name.length];


public Computer(){


b.setLayout(new GridLayout(4,3,3,3));
for (int i=0;i button[i]=new Button(name[i]);
b.add(name[i],button[i]);


}


Frame f=new Frame("计算器");
f.setLayout(new GridLayout(2,1));
h.add(t);
f.add(h);
f.add(b);

f.pack();
f.setVisible(true);

f.addWindowListener(new WindowAdapter(){


public void windowClosing(WindowEvent e){

System.exit(0);

}

});

}


public static void main(String []args){


Computer m=new Computer();


}

}
我写了个关于计算器的程序.可是要怎么添加监听就可以把键盘的数字输入到文本框里????


import java.awt.*;
import java.awt.event.*;
public class My_Cal
{
public static void main(String arg[])
{
My_Frame1 mc1=new My_Frame1();
mc1.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e){System.exit(0);}});
}
}
class My_Frame1 extends Frame
{

static String a=new String("");
static String b=new String("");
static String c=new String("");
Panel p1=new Panel();
TextField t1=new TextField("",20);
// b1.setLabel("adf");
Button b1[]=new Button[10];
Button b2[]={new Button("+"),new Button("-"),new Button("*"),new Button("/"),new Button("=")};
Menu menu1=new Menu("编辑");
Menu menu2=new Menu("设置");
Menu menu3=new Menu("帮助");
MenuBar mb1=new MenuBar();
MenuItem mi11=new MenuItem("复制");
MenuItem mi12=new MenuItem("粘贴");
MenuItem mi21=new MenuItem("color");
MenuItem mi31=new MenuItem("帮助主题");
MenuItem mi32=new MenuItem("关于");
My_Frame1()
{
mb1.add(menu1);
mb1.add(menu2);
mb1.add(menu3);
menu1.add(mi11);
menu1.add(mi12);
menu2.add(mi21);
menu3.add(mi31);
menu3.add(mi32);
this.setTitle("我的计算器");
this.setLayout(new BorderLayout());
p1.setLayout(new GridLayout(4,4,5,5));
for(int j=0;j<4;j++)
{
p1.add(b2[j]);
b2[j].addActionListener(new A_mycal());

}
for(int i=0;i<10;i++)
{
b1[i]=new Button(" "+i);
p1.add(b1[i]);
b1[i].addActionListener(new A_mycal());
}
p1.add(b2[4]);
b2[4].addActionListener(new A_mycal());
// b1[1].setBounds(10,10,40,25);
this.setMenuBar(mb1);
this.add(t1,BorderLayout.NORTH);
this.add(p1,BorderLayout.CENTER);
this.setBounds(350,300,200,200);
this.setResizable(false);
this.setVisible(true);
}
class A_mycal implements ActionListener
{
public void actionPerformed(ActionEvent e)
{

Object o1=e.getSource();
for(int i=0;i<10;i++)
if(o1==b1[i])
{
// a=a+b1[i].getLabel();
a=a+i;
t1.setText(a);
break;
}
for(int j=0;j<4;j++)
if(o1==b2[j])
{
t1.setText("");
b=a;
a="";
c=b2[j].getLabel();
break;
}
if(o1==b2[4])
{ if(a.equals(""))
a="0";
if(b.equals(""))
b="0";
if(c.equals("+"))
{
int r=Integer.parseInt(b)+Integer.parseInt(a);
t1.setText(""+r);
a="";
b="";
}
if(c.equals("-"))
{int r=Integer.parseInt(b)-Integer.parseInt(a);
t1.setText(""+r);
a="";
b="";}
if(c.equals("*"))
{int r=Integer.parseInt(b)*Integer.parseInt(a);
t1.setText(""+r);
a="";
b="";}
if(c.equals("/"))
{if(a.equals("0"))
t1.setText("分母不能为0");
else
{
int r=Integer.parseInt(b)/Integer.parseInt(a);
t1.setText(""+r);

}
a="";
b="";

}

}


}
}
}


你的我没看 这是我原来敲的 你对比着弄吧


这是我用SWING做的计算器,这个是监听和计算的部分
说明一下,display是JTextField类型的文本框

public void actionPerformed(ActionEvent evt){
String s=evt.getActionCommand();
if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals(".")){
if(start) display.setText(s);
else display.setText(display.getText()+s);
start=false;
}
else{
if(start){
if(s.equals("-")){
display.setText(s);
start=false;
}
else op=s;
}
else{
double x=Double.parseDouble(display.getText());
calculate(x);
op=s;
start=true;
}
}
}

public void calculate(double n){
if(op.equals("+")) arg +=n;
else if(op.equals("-")) arg -=n;
else if(op.equals("*")) arg *=n;
else if(op.equals("/")) arg /=n;
else if(op.equals("=")) arg =n;
display.setText(""+arg);



对了,要实现监听类要多后面几个词!
class CalculatorPanel extends JPanel implements ActionListener


哦谢谢 我现在是初学者 弄到那不知道该怎么写监听了


要实现监听必须实现相应的监听接口!
implements一下你所需要的接口


我也是初学者啊,上个礼拜刚好教到AWT和SWING组件,实验也是写计算器,呵呵!


↑返回目录
前一篇: 细谈软件需求分析过程
后一篇: 求 Jakarta-ORO 包 写的 正则表达式!