2012-02-14 9 views
0

私は、メインのjFrameを持っているので、ボタンを押して新しいJFramesを開くことができますが、他のJFrameを開くと、以前のものがそこに残っています。次のボタンを押してから、新しいJFrameに移動します(前のボタンはそこにはありません)。前のボタンを押すと、前のJFrameに戻ります。メインJFrameを閉じる

私は、彼らが(jframe1.disposeのようにうまくやって、処分の機能があります知っている)が、私は、そのコードメインでどのようにこの

public static void main(String args[]) { 


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

のように書かれている、非常に最初のJFrameを隠すためにどのようにそれを得るいけませんボタンコードで.setVisible(false)と設定しますか?

答えて

2

JFrameへの参照を保持する必要があります。そのため、後で可視性を設定することができます。

private JFrame myFrame; 

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

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

JFrameはトップレベルのコンテナであることを注意、あなただけは本当にアプリケーションごとに1つずつ持っていることになっています。 JFrameを複数使用する代わりに、1つだけを使用し、代わりにさまざまなJPanelをスワップする方が良いかもしれません。

+1

'setVisible(false)'を呼び出すだけで、ネイティブスクリーンリソースは解放されないことに注意してください。ウィンドウを再利用する予定がない場合は、代わりに 'dispose()'メソッドを使用してください。 – barjak

0

1つのフレームだけを保持し、新しいパネルをコンテンツとして設定すると、安全なリソースになります。

あなたの質問はフレームへの参照を扱う方法でしたか?次のフレームが作成されるコードを入力してください。

0

あなたのGUIを(私が想定しているようなJFrameを)変数に割り当て、そのオブジェクトに対して.setVisible(false)を呼び出すことができます。上記のコードのオブジェクトは多かれ少なかれ匿名であるため、そのオブジェクトにアクセスすることはできません。

thisをチェックすることもできます。

関連する問題