0

私はJavaGUIプロジェクトを作成していますが、これは2つのフレームで構成されています。

問題は、最初のフレームから2番目のフレームを呼び出すときに、最初のフレームの可視性がfalseに設定されるように設定したことです。問題は、2番目のフレームのボタンを使用して最初のフレームを再び表示するにはどうすればよいかです。

このメソッドを捨てて、代わりに新しいjpanelを作成する必要がありますか?jpanelにはjframeと同様の機能がありますか?

4

1 に答える 1

4

の使用を検討してくださいCardLayout。このようにして、別のフレームを必要とせずに、複数のUIを介して切り替えることができます。使い方はこちらです。

編集:ギヨームが彼のコメントに投稿したように、アンドリューからのこの回答は、レイアウトの使用方法もカバーしています。

Edit2:
私の最新の投稿についてもう少し情報をリクエストしたので、そのようなクラスは次のようになります。

import javax.swing.JFrame;


public abstract class MyFrameManager {
    static private JFrame   startFrame,
                        anotherFrame,
                        justAnotherFrame;

static public synchronized JFrame getStartFrame()
{
    if(startFrame == null)
    {
        //frame isnt initialized, lets do it
        startFrame = new JFrame();
        startFrame.setSize(42, 42);
        //...
    }

    return startFrame;
}

static public synchronized JFrame getAnotherFrame()
{
    if(anotherFrame == null)
    {
        //same as above, init it
    }

    return anotherFrame;
}

static public synchronized JFrame getJustAnotherFrame()
{
    //same again
    return justAnotherFrame;
}

public static void main(String[] args) {
    //let's test!

    JFrame start = MyFrameManager.getStartFrame();
        start.setVisible(true);

    //want another window
    JFrame another = MyFrameManager.getAnotherFrame();
        another.setVisible(true);

    //oh, doenst want start anymore
    start.setVisible(false);
}
}

この方法では、インスタンス化は1JFrame回だけですが、マネージャークラスを介していつでもそれらにアクセスできます。その後、彼らをどうするかはあなたの決断です。
また、シングルトンにとって非常に重要なスレッドセーフにしました。

于 2013-02-02T15:47:15.447 に答える