Подтвердить что ты не робот

Можно ли добавить компонент в определенную ячейку сетки при использовании GridLayout?

Когда я устанавливаю GridLayout в JPanel, а затем добавляю что-то, он добавляется впоследствии в "текстовом порядке" (слева направо, сверху вниз). Но я хочу добавить элемент в определенную ячейку (в i-й строке в j-м столбце). Возможно ли это?

4b9b3361

Ответ 1

Нет, вы не можете добавлять компоненты в определенную ячейку. Что вы можете сделать, это добавить пустые объекты 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:

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

Ответ 2

да

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

Создайте свою панель и установите ее расположение.
новый GridLayout (numberOfRows, numberOfColums, HorizontalGap, VerticleGap)

(новый GridLayout (2,2,1,1)) => здесь я хочу 2 строки, 2 столбца,
- если есть горизонтальные промежутки (HGap), они должны быть 1px (1unit)
- Я также хочу то же самое для вертикальных разрывов, поэтому я делаю то же самое, что и вертикальные разрывы (VGap). т.е. 1 единица
-- В этом случае; пробелы => интервалы/поля/отступы --in в этом смысле.

Создайте свои компоненты и добавьте их на панель
- (component, 0,0) => 0,0 - строка и столбец.. (как двумерный массив). @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 );