这个java程序错在什么地方啊?

来源:百度知道 编辑:UC知道 时间:2024/05/24 03:02:50
public class MyPhone extends JFrame implements ActionListener{
JPanel pnlMain=new JPanel();
JPanel pnlSouth =new JPanel();
JPanel pnlNorth=new JPanel();
JPanel pnlCenter=new JPanel();
JButton [] btn=new JButton[10];
JButton btnClear=new JButton("*");
JButton btn0=new JButton("0");
JButton btnBh=new JButton("#");
JTextField jtfDisplay=new JTextField(15);
JTextField jtfStatus=new JTextField(15);
StringBuffer sb = new StringBuffer();
public MyPhone(){
for(int i=1;i<btn.length;i++){
btn[i]=new JButton(""+i);
add(btn[i]);
pnlMain.setLayout(new BorderLayout(5,5));
pnlMain.add("North",pnlNorth);
pnlMain.add("Center",pnlCenter);
pnlMain.add("South",pnlSouth);
pnlNorth.setLayout(new FlowLayout(FlowLayout.CENTER));
pnlSouth.setLayout(new FlowLayout(FlowLayout.CENTER));
pnl

if(ae.getSource()==btnBh){
if(ae.getSource()==btn0){
sb.append('0');
jtfDisplay.setText(sb.toString());
}
else if(ae.getSource()==btn[0]){
sb.append('1');
jtfDisplay.setText(sb.toString());
}
else if(ae.getSource()==btn[1]){
sb.append('2');
jtfDisplay.setText(sb.toString());
}

}
你这里有一个嵌套,但是按钮的事件监听是不能进行嵌套的,因为它每次判别过后结果不保存,下一次重新调用事件监听器判断,不可能执行到嵌套内部的ae.getSource()==btn0之类的代码.就没有结果.
代码还有一个问题就是,如果你在清除的时候没有把字符串中内容清除掉,再调用这个字符串的话它里面的内容还在,就不能达到预期的目的.