1

ユーザーが 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);

    }
}
4

2 に答える 2

-2

[レイアウト] で [Miglayout] オプションを選択します。私はこれが最も簡単な方法であることがわかりました

https://i.stack.imgur.com/XKHVu.png

于 2019-09-19T18:16:45.997 に答える