web-dev-qa-db-ja.com

GridLayoutが使用されている場合、特定のグリッドセルにコンポーネントを追加できますか?

GridLayoutをJPanelに設定してから何かを追加すると、「テキストの順序」(左から右、上から下)で追加されます。しかし、特定のセル(j番目の列のi番目の行)に要素を追加したいと思います。出来ますか?

25
Roman

いいえ、特定のセルにコンポーネントを追加することはできません。できることは、空のJPanelオブジェクトを追加し、配列内のオブジェクトへの参照を保持してから、コンポーネントを任意の順序で追加することです。

何かのようなもの:

int i = 3;
int j = 4;
JPanel[][] panelHolder = new JPanel[i][j];    
setLayout(new GridLayout(i,j));

for(int m = 0; m < i; m++) {
   for(int n = 0; n < j; n++) {
      panelHolder[m][n] = new JPanel();
      add(panelHolder[m][n]);
   }
}

その後、JPanelオブジェクトの1つに直接追加できます。

panelHolder[2][3].add(new JButton("Foo"));
44
Rob Heiser

はい

    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(2,2,1,1));
    JButton component= new JButton("Component");
    panel.add(component, 0,0 );

パネルを作成し、そのレイアウトを設定します。
new GridLayout(numberOfRows、numberOfColums、Horizo​​ntalGap、VerticleGap)

(new GridLayout(2,2,1,1))=>ここで2行、2列、
-水平方向のギャップ(HGap)がある場合、それらは1px(1単位)でなければなりません
-垂直方向のギャップにも同じようにしたいので、垂直方向のギャップ(VGap)と同じにします。すなわち1ユニット
- この場合;ギャップ=>スペース/マージン/パディング-その意味で。

コンポーネントを作成し、パネルに追加します
-(component、0,0)=> 0,0は行と列です(2d配列のように)。 @row 0&@column 0、または行0と列0の交差点
行と列を配置する場所にコンポーネントを配置して、コンポーネントの配置先を指定します。
各セルには位置== [行] [列]があります

または、hgapsとvgapsなしで実行できます。

    JPanel panel = new JPanel();        
    panel.setLayout(new GridLayout(2,2));
    JButton component= new JButton("Component");
    panel.add(component, 0,0 );
5
TimeTrax