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.

Другие вопросы по тегам