Java - GridBagLayout/ вставляет позицию JLabel под другую
Я использую GridBagLayout
и есть два JLabels
, Я хочу, чтобы первый отображался в верхнем левом углу, а следующий справа под ним и справа. Я использую:
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(10, 10, 10, 10);
JLabel jl = new JLabel("This is a JLabel!", SwingConstants.CENTER);
jl.setBorder(BorderFactory.createLineBorder(Color.black));
gbc.ipadx = 87;
gbc.ipady = 220;
add(jl, gbc);
И отображается нормально, как показывает первый рис. Затем я пытаюсь создать и добавить второй, но у меня возникают проблемы с позиционированием ниже и справа первого. Может я что-то не так делаю с Insets
так как это дает дополнительное пространство сверху:
gbc.insets = new Insets(500, 10, 10, 10);
JLabel jl2 = new JLabel("This is a JLabel!", SwingConstants.CENTER);
jl2.setBorder(BorderFactory.createLineBorder(Color.black));
gbc.ipadx = 87;
gbc.ipady = 220;
add(jl2, gbc);
Как я могу это исправить? Спасибо
1 ответ
Решение
Попробуйте что-то вроде этого:
GridBagLayout gbl=new GridBagLayout();
setLayout(gbl);
GridBagConstraints gbc=new GridBagConstraints();
gbc.insets = new Insets(10, 10, 10, 10);
JLabel jl = new JLabel("This is a JLabel!", SwingConstants.CENTER);
jl.setBorder(BorderFactory.createLineBorder(Color.black));
gbc.gridy = 0;
gbc.gridx = 0;
gbc.ipadx = 50;
gbc.ipady = 50;
add(jl, gbc);
gbc.insets = new Insets(10, 10, 10, 10);
JLabel jl2 = new JLabel("This is a JLabel!", SwingConstants.CENTER);
jl2.setBorder(BorderFactory.createLineBorder(Color.black));
gbc.gridy = 1;
gbc.gridx = 1;
gbc.ipadx = 50;
gbc.ipady = 50;
add(jl2, gbc);
Используйте атрибуты gridy и gridx, чтобы указать положение JLabels в GridBagLayout-Table.