2012-02-14 115 views
0

我有一个主要的jFrame的帮助,我按下按钮并打开新的JFrames,但问题是,当我打开其他JFrame的以前的仍然存在,因为我想要的是,当我按接下来的按钮,然后我向前移动到新的JFrame(前一个不应该在那里),当我按前一个按钮时,我会移回到先前的JFrame。关闭主JFrame

我知道有处置的功能,他们做的很好像jframe1.dispose(),但我不明白它是如何隐藏最早的JFrame其代码在主是这样写的

public static void main(String args[]) { 


    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() 
      {   
      new GraphicalInterface().setVisible(true); 
      } 
     }); 
    } 

如何我是否在按钮代码中将此设置为.setVisible(false)?

回答

2

您需要保留对JFrame的引用,以便您稍后可以将其设置为可见。

private JFrame myFrame; 

public void run() { 
    myFrame = new GUI(); 
    myFrame.setVisible(true); 
} 

public void hide() { 
    myFrame.setVisible(false); 
} 

注意,一个JFrame是一个顶层容器,你才真正应该有每个应用程序之一。如果不是使用多个JFrame,而是仅使用一个,则可能会更好一些,而不是使用各种JPanel

+1

请注意,如果您只是调用'setVisible(false)',本机屏幕资源将不会被释放。如果您不打算重新使用窗口,请改为使用'dispose()'方法。 – barjak 2012-02-14 12:32:07

0

如果您只保留一个框架并将新面板设置为内容,它会安全的资源。

你的问题是如何处理对框架的引用?请在下一帧创建的地方提供代码。

0

您可以将您的GUI(扩展JFrame,我猜想)分配给一个变量并在该对象上调用.setVisible(false)。由于上述代码中的对象或多或少是匿名的,因此您无法访问该对象。您也可以检查this