1

アーケードゲームのGUIを作成しています。図に示すように、いくつかの JPanels と 1 つの JMenu を含む単一の JFrame で構成されます。

ここに画像の説明を入力

BorderLayout を使用してみましたが、パネルが正しく表示されません。私が得るのは、JMenu が適切に表示されることです。[1] は、その幅を内部のボタンの内容に合わせて調整します。JPanel [2] は、画面のほぼ残りの部分を占めています。[3] は最後に細い線として表示されます。

それらを適切な位置に配置するために使用するコードの断片を次に示します。

    add(new TopMenu(), BorderLayout.PAGE_START);    // JMenu
    add(new LeftPanel(), BorderLayout.WEST);        // [1]
    add(new StatusPanel(), BorderLayout.CENTER);    // [2]
    add(new GameUI(), BorderLayout.LINE_END);       // [3]

この動作を引き起こしている可能性のあるものについての提案は大歓迎です。

4

2 に答える 2

3

JPanels/コンテナは、それぞれ独自のレイアウトを使用して常にネストできます。したがって、全体的なレイアウトは、BorderLayout.NORTH にメニューがあり、BorderLayout.EAST 側に JPanel [1] がある BorderLayout であり、別の BorderLayout または BoxLayout のいずれかを使用して JPanel を BorderLayout.CENTER の位置にネストし、他のものを配置することができます。この JPanel に 2 つの JPanel。たとえば、この CENTER JPanel は BorderLayout を使用でき、JPanel [2] を BorderLayout.NORTH 位置に保持し、JPanel [3] を BorderLayout.CENTER 位置に保持できます。

于 2012-08-13T16:35:49.907 に答える
1

にはSwingJPanelコンポーネントが含まれている必要があります。そうしないと、で pack() を呼び出したときに最小サイズに縮小されますJFrame

JPanelゲームを作成しているので、 で優先サイズを設定し、 で優先サイズを設定する必要がありますJFrame。メソッドを使用して、少なくとも 1 つのJPanelコンポーネントを直接ペイントする必要があると想定していますpaintComponent

JPanel-2JPanel-3rightPanelにネストできます。JPanel-1rightPanelを に配置するだけでなくFlowLayoutrightPanel自体にも使用できます。JFrame

JPanelネストせずに 3 をレイアウトするレイアウト マネージャーの使用を主張する場合は、 GridBagLayout. JPanel-1は幅 1 列、深さ 2 行になります。 JPanel-2は、幅 1 列、深さ 1 列になります。 JPanel-3は、幅 1 列、深さ 1 列になります。

3 の優先サイズを設定する必要がありますJPanel

于 2012-08-13T17:05:49.303 に答える