Java一次性弹出多个窗口的错误

大概说下我遇到的情况:
设计了两个窗口A和B,每个窗口上分别有有一个按钮。对每一个按钮进行监听。
程序运行后,先打开一个窗口A,然后通过点击这个窗口上的按钮实现:打开另一个窗 口B,同时利用Dispose()关闭当前窗口。
就这样两个窗口之间互相调用两三次后,出现了点击A上的按钮,一下子出现多个B窗口,然后继续点击,窗口越来越多。
在这里插入图片描述
通过不断的调试,最后终于发现了出现这个问题的原因。下面通过代码显示两个窗口之间的关系。

public class B_1 {
 JFrame frameA;
 JButton buttonA=new JButton("A");
 public void Wo() {
  frameA =new JFrame();
  frameA.add(buttonA);
  buttonA.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    //点击按钮A,关闭窗口A,打开窗口B
   }
  });
 } 
 JFrame frameB;
 JButton buttonB=new JButton("B");
 public void B() {
  frameB=new JFrame();
  frameB.add(buttonB);
  buttonB.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    //点击按钮B,关闭创口B,打开窗口A
   }
  });
 } 
}

原来原因是JFrame的实例化在方法体中进行,如果把JFrame的生命和实例化同时进行,且放在方法体之外,窗口便不会重复出现了
但这时又出现了按钮消失不见的bug,通过调试,发现应该将按钮实例化放在方法体中,否则多次调用后系统会找不到按钮在哪。
最后,。问题解决后的代码如下:

public class B_1 {
 JFrame frameA =new JFrame();
 JButton buttonA;
 public void Wo() {
  buttonA=new JButton("点击");
  frameA.add(buttonA);
  buttonA.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    //点击按钮A,关闭窗口A,打开窗口B
   }
  });
 } 
 JFrame frameB=new JFrame();
 JButton buttonB;
 public void B() {
  buttonB=new JButton();
  frameB.add(buttonB);
  buttonB.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    //点击按钮B,关闭创口B,打开窗口A
   }
  });
 }
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值