Как добавить несколько компонентов на вертикально прокручиваемую панель с разными размерами - PullRequest
0 голосов
/ 24 октября 2019

Поэтому я пытался придумать хороший менеджер раскладки, который позволил бы мне поместить несколько компонентов в прокручиваемую панель с разными размерами. Единственное, что я нашел, было gridlayout, но оно вынуждает тот же размер.

вот текущий код, который у меня есть:

package main;

import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {

    public static void main(String[] args) {

        // Create and set up a frame window
        JFrame frame = new JFrame("Layout");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Define the panel to hold the components
        JPanel panel = new JPanel(new GridLayout(0, 1, 0, 0));
        panel.setPreferredSize(new Dimension(500, 800));

        for (int i = 0; i < 20; i++) {
            JButton button = new JButton("Button " + i);
            button.setPreferredSize(new Dimension(50, 100 + (i * 10)));
            panel.add(button);
        }



        // Add the panel and set the window to be visible
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);

    }

}

Я также знаю о GridBagLayout, но я хочумакет, который не потребует от меня ввода чисел вручную.

1 Ответ

1 голос
/ 24 октября 2019

Я также знаю о GridBagLayout, но мне нужен макет, который не требовал бы от меня ввода чисел вручную.

Вы можете указать:

 constraint.gridWidth = GridBagConstraints.REMAINDER;

и каждый компонент будет помещен в новую строку.

Или вы можете использовать BoxLayout, как я предложил в своем комментарии, и не беспокоиться об ограничениях.

Прочитайте руководство. Ограничения для GridBagLayout объясняются более подробно.

...