Мне нужно, чтобы размер 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);
}
}