3

Java's Swingここでは、UIアプリケーションを作成するために使用しています。いくつかのボタンを備えたJFrameを作成しました。このボタンをクリックすると、この場所にいくつかの異なるコンテンツを含む新しいJFrameが必要になります。ただし、ここに新しいJFrameをロードしたくありません。

actionPerformed(ActionEvent obj)1つのアプローチは、最初のJFrameのボタンのメソッドで2番目のJFrameの可視性をTrueに設定することです。しかし、それは再び新しいJFrameをロードし、私はそれを望んでいません。

public class FirstUI extends JFrame {
    JButton but1;

    public FirstUI(){
        but1= new JButton("Click here");
        add(but1);

    XYZ obj= new XYZ():
    but1.addActionListener(obj);
    }

    public class XYZ implements ActionListener{
        public void actionPerformed(ActionEvent obj1){

             // WHAT TO DO HERE  
        } 
    }
}

さまざまなボタンをクリックするとコンテンツが変化するJFrameが1つだけ必要です。どうすればそれを達成できますか?

4

4 に答える 4

11

を見てくださいCardLayout。これにより、フレームのコンテンツを切り替えることができます。

CardLayoutオブジェクトは、コンテナーのレイアウトマネージャーです。コンテナ内の各コンポーネントをカードとして扱います。一度に表示できるカードは1つだけで、コンテナはカードのスタックとして機能します。CardLayoutオブジェクトに追加される最初のコンポーネントは、コンテナーが最初に表示されたときに表示されるコンポーネントです。

例については、 CardLayoutの使用方法を参照してください。

于 2013-03-26T08:09:31.213 に答える
3

実行時にコンテンツを動的に操作することもできJFrameます。add(...)フレームを表示する前と同じようにremove(...)、、、メソッドを使用removeAll(...)してコンテンツを追加および削除できます。完了したら、変更されたコンテナのメソッドを呼び出して、すべてが落ち着き、正しく表示されるようにする必要がありrevalidate()ますrepaint()

ただし、正しい解決策は、実装しようとしている実際の概念によって異なると思います。機能を強調するためにいくつかのGUI要素を追加または削除する場合、正しい方法は、概説したようにコンテナーを操作することです。ただし、システムの状態に応じてわずかに異なるGUI(2〜3以下)CardLayoutが必要な場合は、より適切な選択になります

于 2013-03-26T08:22:21.183 に答える
0

親クラスの可視性をfalseに設定できます。

次に、必要なコンテンツを含むフレームを一度に1つだけ取得します。

ButtonのクリックイベントでフレームとsetVisible(fase)の静的オブジェクトを作成する必要があります。

元。

public class demo  {
static JFrame jf;
public static void main(String a[])
{
    JButton b=new JButton("OK");
    JPanel jp=new JPanel();
    jf=new JFrame();
    jf.setVisible(true);
    jf.setSize(200,200);
    jf.add(jp);
    jp.add(b);

    b.addActionListener( new ActionListener(){
    public void actionPerformed(ActionEvent e)
    {
     jf.setVisible(false);
     JFrame f= new JFrame();
     f.setSize(200,200);
     f.setVisible(true);
    }
    });
}

}

それはあなたを助けます。

あなたは私のポイントを得ましたか?

于 2013-03-26T08:23:25.303 に答える
0

1つのアプローチは、JFrameのコンテンツペインを変更することです。これは基本的にJPanelです。frame.setContentPane( <your new panel> );
2番目のアプローチは、@PeterLangが行ったことを実行することです。それは、さまざまなコンテンツグループを変更できるレイアウトマネージャーを使用することです。

于 2013-03-26T08:24:50.107 に答える