Как исправить ошибку в GridLayout / GridBagConstraints? - PullRequest
1 голос
/ 21 марта 2020

Почему GridLayot не работает в Swing Java?

Мне нужно поместить элемент в бетонную ячейку, но они неправильно расположены (рисунок)

Как разместить элементы в бетонной ячейке в Java Качели с разметкой сетки?

Мой код:

package com.KvaksManYT;

import javax.swing.*;
import java.awt.*;

public class GUI extends JFrame {
    public GUI() {
        super("Test");
        setBounds(100, 100, 250, 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container container = this.getContentPane();
        container.setLayout(new GridLayout(3, 2, 2, 2));
        container.add(but1, onPosition(1, 2));
        container.add(but2, onPosition(2, 2));
        container.add(but3, onPosition(1, 1));
        container.add(but4, onPosition(2, 1));
    }

    private JButton but1 = new JButton("Press 1");
    private JButton but2 = new JButton("Press 2");
    private JButton but3 = new JButton("Press 3");
    private JButton but4 = new JButton("Press 4");

    private GridBagConstraints onPosition(int x, int y) {
        GridBagConstraints layConstraints = new GridBagConstraints();
        layConstraints.fill = GridBagConstraints.BOTH;
        layConstraints.gridx = x;
        layConstraints.gridy = y;
        return layConstraints;
    }
}

Ответы [ 2 ]

1 голос
/ 21 марта 2020

GridBagConstraints используется для Сетка Сумка Макет , а не Макет сетки .

0 голосов
/ 21 марта 2020

Вы также должны начать считать с 0:

public class GUI extends JFrame {
    public GUI() {
        super("Test");
        setBounds(100, 100, 250, 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        GridBagConstraints layConstraints = new GridBagConstraints();
        layConstraints.fill  = GridBagConstraints.NONE;
        layConstraints.insets = new Insets(3, 2, 2, 2);

        Container container = this.getContentPane();
        container.setLayout(new GridBagLayout());

        container.add(but1, onPosition(0, 1, layConstraints));
        container.add(but2, onPosition(1, 1, layConstraints));
        container.add(but3, onPosition(0, 0, layConstraints));
        container.add(but4, onPosition(1, 0, layConstraints));

    }
...