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

Мне нужно разрешить пользователям добавлять больше текстовых полей в мой JFrame, поэтому, как только размер фрейма превысит его первоначальное значение, появится панель прокрутки. Поскольку я не могу добавить JScrollPane в JFrame для включения прокрутки, я решил поставить JPanel на JFrame и передайте объект JPanel в конструктор JScrollPane. Прокрутка теперь работает нормально, но только до тех пор, пока не достигнет границ JPanel. Дело в том, что размер JPanel остается неизменным и не растягивается динамически. Что происходит, так это то, что кнопки в моем коде занимают все пространство JPanel размером 300x300, но я хочу сделать так, чтобы JPanel растягивался, когда эти элементы управления занимали свое первоначальное пространство. Пожалуйста, порекомендуйте.

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;


public class Skrol {
    public static void main(String[] args) {


        JFrame f = new JFrame();
        f.setLayout(new FlowLayout());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel p = new JPanel();


        p.setPreferredSize(new Dimension(400,400));



        JScrollPane jsp = new JScrollPane(p);

        jsp.setPreferredSize(new Dimension(300,300));
        jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

            for(int i=0;i<100;i++)
                {
                    JButton b = new JButton("Button "+i);
                    p.add(b);
                }
        f.add(jsp);
        f.setSize(new Dimension(600,600));
        f.setLocation(300, 300);
        f.setVisible(true);

    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос