ユーザーが JFrame にテキスト フィールドを追加できるようにする必要があるため、フレームのサイズが元の値を超えるとスクロール ペインが表示されます。スクロールを有効にするために JFrame に JScrollPane を追加できないため、JPanel を配置することにしました。 JFrame を開き、JPanel オブジェクトを JScrollPane コンストラクターに渡します。スクロールが正常に機能するようになりましたが、JPanel の境界に到達するまでしか機能しません。問題は、JPanel のサイズがそのままで、動的に伸縮していないことです。コード内のボタンが 300x300 のサイズの JPanel のすべてのスペースを使い果たしていますが、これらのコントロールが元のスペースを使い果たしたら、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);
}
}