父窗体A(JFrame)中通过 new BJFrame 生成了一个子窗体B,B中有一个Exit按钮,我写的函数是 System.exit(0),但是一旦按了B的这个Exit, A窗体也消失了。  
如果要向B退出时,A仍然保留,应该如何编程?谢谢!

解决方案 »

  1.   

    public class Frame extends JFrame{
    Frame()
    {
    super("A");
    JButton b1=new JButton("弹出");
    b1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e)
    {
    final JFrame b=new JFrame("B");
    JButton b2=new JButton("Exit");
    b2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e)
    {
    b.dispose();
    }
    });
    b.add(b2);
    b.setSize(300,300);
    b.setVisible(true);
    }
    });
    setSize(300,300);
    add(b1);
    setVisible(true);
    }
    public static void main(String[] args)
    {
    Frame a=new Frame();
    }
    }参考一下我的代码吧,不能用System.exit(0),会推出整个程序,将B窗口的对象调用dispose(),即可只关闭一个窗体
      

  2.   

    System.exit(0)是直接退出系统了
    你应该调用窗口关闭的函数或者隐藏窗口
      

  3.   

    不要用System.exit(0)
    可以用 dispose()或setVisible(false),前者b窗体销毁,后者只是隐藏b窗体
      

  4.   

    把System.exit(0);换成B.setVisible(false);
    这样就会保留A窗口。
      

  5.   

    System.exit(0);是退出系统。
    用dispose()。
      

  6.   

    如果是create出来的,最好用 dispose()如果是A类的子类,最好用 setVisible(false);  隐藏起来
      

  7.   

    JFrame可以给窗口指定一种关闭方式,例如DO_NOTHING_ON_CLOSE,HIDE_ON_CLOSE,DISPOSE_ON_CLOSE,EXIT_ON_CLOSE这四种方式,只也是JFrame和Frame最大的不同之处import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class AFrame extends JFrame
    {
    private JButton btnB = new JButton("打开窗口B");

    public AFrame()
    {
    this.setTitle("A窗口");
    this.setPreferredSize(new Dimension(400, 300));
    this.setLayout(new FlowLayout());
    this.add(btnB);

    btnB.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent event)
    {
    JFrame bFrame = new BFrame();
    bFrame.pack();
    bFrame.setLocationByPlatform(true);
    bFrame.setVisible(true);
    bFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
    });
    }

    public static void main(String[] args)
    {
    JFrame aFrame = new AFrame();
    aFrame.pack();
    aFrame.setLocationByPlatform(true);
    aFrame.setVisible(true);
    aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }class BFrame extends JFrame
    {
    public BFrame()
    {
    this.setTitle("B窗口");
    this.setPreferredSize(new Dimension(400, 300));
    }
    }