0


シンプルなゲームレイアウトを作ろうとしています。私はコンテナからレイアウトを作成します - すべてのコンテナは私の例に似ています (JPanel、setlayout、コンポーネントの追加、JPanel を返すことを意味します)。

レイアウト全体の構造: (この 3 つはメイン レイアウトにあります)
upper - BorderLayout.PAGE_START; // メニュー
センター - BorderLayout.PAGE_CENTER; //centerContainer()
ボトム - BorderLayout.PAGE_END; //statusBar -


この 3 つのコンテナーのテキストを配置したコンテナーのみは正常に機能しますが、centerContainer での配置に問題があります。
センター コンテナ構造: 3 つのコンテナ - aboutServerContainer、aboutGameContainer、gameContainer。

gameContainer のサイズは 450x450 です

serverInfo の下の gameContainer と gameInfo と同じ高さで serveInfo を開始したいのですが、それはどういうわけか serverInfo を囲み、gameInfo はその下にありますが、gameContainer の下に空きスペースも作ります (ここに空きスペースは必要ありません)。

ここに画像の説明を入力

private Container centerContainer() {
        JPanel centerJPanelJP = new JPanel();
        GridBagConstraints gbc = new GridBagConstraints();
        stredniJPanelJP.setLayout(new GridBagLayout());

        //gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridheight = 1;
        centerJPanelJP.add(aboutServerContainer(),gbc);

        gbc.gridheight = 1;
        gbc.gridy = 1;
        centerJPanelJP.add(aboutGameContainer(),gbc);

        gbc.gridheight = 2;
        gbc.gridx = 0;
        gbc.gridy = 0;
        centerJPanelJP.add(gamePanelContainer(),gbc);

        return centerJPanelJP;
    }
4

2 に答える 2

3

次のようなレイアウトを実現しようとしているようです。

+-----+-----+
|  A  |     |
+-----+  C  |
|  B  |     |
+-----+-----+

それを達成するには、グリッドの制約を次のようにする必要があります。

  |  x  y  width  height
--+---------------------
A |  0  0    1       1 
B |  0  1    1       1 
C |  1  0    1       2 

私の意見では、特殊なケース、入れ子になったパネル、並べ替えの柔軟性のなさなどに対処するよりも、常に「強力な」レイアウト マネージャーを使用する方が適切です。

于 2012-02-07T15:26:03.927 に答える
0

なぜこのように行かないのですか:

メインの BroderLayout がある

  • PAGE_START に何も追加しない
  • 中央のコンテナを CENTER に追加
  • VerticalPanel を LINE_START に追加 - 垂直パネルに serverInfo を追加 - 垂直パネルに gameInfo を追加 - ステータスバーを PAGE_END に追加
于 2012-02-07T15:08:18.197 に答える