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