当前位置: 代码迷 >> J2SE >> java关闭窗口有关问题
  详细解决方案

java关闭窗口有关问题

热度:84   发布时间:2016-04-24 00:49:00.0
java关闭窗口问题
我有三个窗口A、B、C,A中有一个按钮能打开B,B中有一个按钮打开C。B、C都是A的内部类。请问我在A中点击按钮打开B后,再把B窗口关掉,接着再点击按钮打开B,再点击B中的按钮,结果弹出了两个C窗口。怎样才能只弹出一个C呢?一下是我的代码


import javax.swing.*;

import java.awt.event.*;

public class CloseWindow extends JFrame{
private JButton button=new JButton("show b");

private void setComponent(){
setTitle("a");
button.addActionListener(new Window1()); //注册打开B窗口
add(button);
pack();
setVisible(true);
}

class Window1 extends JFrame implements ActionListener{
private JButton button2=new JButton("show c");
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("b");
button2.addActionListener(new Window2());//注册打开C窗口
add(button2);
pack();
setVisible(true);
}

}

class Window2 extends JFrame implements ActionListener{
private JLabel label=new JLabel("OK");
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("c");
add(label);
pack();
setVisible(true);
}

}

public static void main(String[] args){
CloseWindow window=new CloseWindow();
window.setComponent();
}
}

------解决方案--------------------
Java code
public class CloseWindow {    JFrame jfa = new JFrame("a"), jfb = new JFrame("b"), jfc = new JFrame("c");    JButton jba = new JButton("showB"), jbb = new JButton("showC");    JTextField jtf = new JTextField("OK" ,20);    public void init() {        jfa.add(jba);        jfb.add(jbb);        jfc.add(jtf);        jfa.setVisible(true);        jfa.pack();        jfa.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        jba.addActionListener(new ActionListener() {                        @Override            public void actionPerformed(ActionEvent e) {                jfb.setVisible(true);                jfb.pack();// TODO Auto-generated method stub                jfb.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);            }        });        jbb.addActionListener(new ActionListener() {                        @Override            public void actionPerformed(ActionEvent e) {                jfc.setVisible(true);                jfc.pack();// TODO Auto-generated method stub                jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);            }        });    }        public static void main(String...args){        new CloseWindow().init();    }}
  相关解决方案