该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自己写了个加法计算器,可以运行,但有三个问题没解决。
代码如下:
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Calculator extends WindowAdapter implements ActionListener{
private double result = 0;
private double data1 = 0;
private boolean resultIndicate = false;
private Frame f;
private Button b1, b2, b3, b4, b5, b6, b7, b8, b9;
private TextField t;
private Panel p,p1,p2;
private char prec='+';
private int zhi=0;
private int nextzhi=0;
private int sum=0;
static public void main(String args[]) {
Calculator cc = new Calculator();
cc.go();
}
public void go()
{
f = new Frame("Calculator");
p = new Panel();
p1 = new Panel();
p2 = new Panel();
p.setLayout(new GridLayout(3,3));
p2.setLayout(new GridLayout(1, 1));
p1.setLayout(new GridLayout(2, 1));
b1 = new Button("1");
b2 = new Button("2");
b3 = new Button("3");
b4 = new Button("4");
b5 = new Button("5");
b6 = new Button("6");
b7 = new Button("7");
b8 = new Button("8");
b9 = new Button("9");
t = new TextField("0",30);
f.add(t,"South");
f.add(p,"Center");
f.add(p1,"East");
f.add(p2,"North");
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
f.setSize(250, 190);
f.setVisible(true);
}
public void actionPerformed(ActionEvent es) {
// TODO Auto-generated method stub
if(es.getSource()==b1){t.setText(t.getText()+1);}
if(es.getSource()==b2){t.setText(t.getText()+2);}
if(es.getSource()==b3){t.setText(t.getText()+3);}
if(es.getSource()==b4){t.setText(t.getText()+4);}
if(es.getSource()==b5){t.setText(t.getText()+5);}
if(es.getSource()==b6){t.setText(t.getText()+6);}
if(es.getSource()==b7){t.setText(t.getText()+7);}
if(es.getSource()==b8){t.setText(t.getText()+8);}
if(es.getSource()==b9){t.setText(t.getText()+9);}
zhi=Integer.parseInt(t.getText());
StringBuffer sb=new StringBuffer(t.getText());
int length=sb.length();
sb.deleteCharAt(length-1);
t.setText(sb.toString());
nextzhi=Integer.parseInt(t.getText());
sum=zhi+nextzhi;
t.setText(sum+"");
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
目标是用JFrame创建出一个3*3的计算器,按动上面的数字,在底下的文本框中显示结果。
如:第一次按下1后显示1,第二次按下2后显示3,同时擦去前面的1。以此类推。
但我写的这个有三个问题:
一、无法擦去前面的数字(如按下1后,显示1;第二次按下1后,显示的是12而非2。)
二、无法正常关闭,只能结束eclipse程序后才能关掉(我最后明明写了windowclosing了啊,怎么还会出现这个问题?)
三、计算数值除无法擦去之外,不支持多次点击(如果三个数字过大的话就会出错)
请高手帮忙看下这个程序应该怎么改,,谢谢了
如果可以的话 最好把改好的加上注释发上来