请问:打开多窗口程序的时候,怎么在打开另一个的时候隐藏前一个窗口?我在第一个程序里设了一个boolean的变量isopen,想通过改变isopen变量的值来达到隐藏效果,可达不到,请问怎么作?

解决方案 »

  1.   

    我的测试程序如下:import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;public class MainFrame extends JFrame { /**
     * @param args
     */
    private JButton b1=new JButton("ok");
    private static boolean isopen=true;
    public MainFrame()
    {
    Container cp=this.getContentPane();
    cp.setLayout(new BorderLayout());
    cp.add(b1,BorderLayout.CENTER);
    b1.addActionListener(new ActionListener()
    { public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    ChildFrame ch=new ChildFrame();
    isopen=false;
    }

    }
    );

    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    MainFrame mf=new MainFrame();
        mf.setTitle("MainFrame");
        mf.setSize(200, 100);
        mf.setLocationRelativeTo(null);
        mf.setVisible(isopen);
         }}
      

  2.   

    你在JButton的动作监听中已经实现了一个新的窗口,只要再下一行把旧窗口mf.setVisible(false);就可以了。
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;public class MainFrame extends JFrame {
    private MainFrame mf = null;
    private JButton b1=new JButton("ok");
    private static boolean isopen=true;
    public MainFrame() {
    mf = this;
    Container cp=this.getContentPane();
    cp.setLayout(new BorderLayout());
    cp.add(b1,BorderLayout.CENTER);
    b1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    ChildFrame ch=new ChildFrame();
    mf.setVisible(false);
    }
    });
    mf.setTitle("MainFrame");
    mf.setSize(200, 100);
    mf.setLocationRelativeTo(null);
    mf.setVisible(true);

    }
    public static void main(String[] args) {
    new MainFrame();
    }}class ChildFrame extends JFrame {
    public ChildFrame(){
    this.setSize(200, 100);
    this.setVisible(true);
    }
    }
      

  3.   

    你根本用不着isopen这个变量,你用它还出现了好多错误呢!特别静态变量不会用就不要乱用.
    楼上说得太对了,你的思路不对.mf.setVisible(isopen)这一句只会执行一次,就算你改变了isopen这个值,也不会隐藏窗口的.重新写一个吧.