3

私はGridBagLayoutを初めて使用しますが、グリッド紙にアイデアを描き出し、グリッド値をグリッドバッグに変換しようとする標準的な規則を使用しようとしました...

私の目標は、以下に示すようなレイアウトを作成することです。

ご希望のレイアウト

現在、次のようになっています。

実際のレイアウト

理由について何か考えはありますか?

左上隅が 0,0 のグリッドを考える場合、私が探している正確な寸法

  1. 目標画像のパネルの赤: 列 0 から開始し、10 列にまたがり、高さ 1 行
  2. 黒いパネルの場合: 列 0、行 1、スパン 10 列、高さ 20 行から開始
  3. 青色のパネルの場合: 列 0、行 21、スパン 10 列、高さ 1 から開始
  4. 緑の列: 列 10、行 0、スパン 16 列、高さ 7 から開始
  5. 紫色の列: 列 10、行 7、スパン 16 列、高さ 16 から開始

ここに私のソースコードがあります:

GBC は GridBagConstraints を拡張するヘルパー クラスであり、使用されるコンストラクターは次のとおりです。

GBC(int 開始 X、int 開始 Y、int 幅、int 高さ)

 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.Rectangle;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Demo extends JApplet
{

    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JPanel panel3 = new JPanel();
    JPanel panel4 = new JPanel();
    JPanel panel5 = new JPanel();

    public void init()
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                initComponents();
            }
        });
    }

    public void initComponents()
    {
        //set the layout of the content pane to gridbag layout
        GridBagLayout gridBag = new GridBagLayout();
        getContentPane().setLayout(gridBag);

        Rectangle rect = getContentPane().getBounds();

        panel1.setBackground(Color.green);
        panel2.setBackground(Color.black);
        panel3.setBackground(Color.red);
        panel4.setBackground(Color.orange);
        panel5.setBackground(Color.yellow);

        add(panel4, new GBC(10, 0, 16, 7).setFill(GBC.BOTH).setWeight(1.0, 1.0));
        add(panel1, new GBC(0, 0, 10, 1).setFill(GBC.BOTH).setWeight(1.0, 1.0));
        add(panel3, new GBC(0, 21, 10, 1).setFill(GBC.BOTH).setWeight(1.0, 1.0));
        add(panel2, new GBC(0, 1, 10, 20).setFill(GBC.BOTH).setWeight(1.0, 1.0));
        add(panel5, new GBC(10, 7, 16, 16).setFill(GBC.BOTH).setWeight(1.0, 1.0));
    }
}

助けていただければ幸いです(ただし、ロジックを説明してください)

4

1 に答える 1