ユーザーが JFrame にテキスト フィールドを追加できるようにする必要があるため、JPanel を含むフレームのサイズが元の値を超えると、スクロール ペインが介入します。 JButton を 1 つ置くと、それを押すと新しい TextField が表示されます (これは私の最初のアイデアであり、必ずしも私が正しいとは限りません)。問題は、ActionListener クラスを呼び出して TextField を追加し、最終的にそのパネルを拡大すると、プログラムは JPanel を最終的にするように要求し、パネルの拡大が許可されないことです。言い換えれば、私は茂みの周りを叩いているように見えます.これをまとめるのを手伝ってください.以下は私のコードの一部です:
public class Button {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel p = new JPanel(new GridLayout(0, 5));
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);
JButton but = new JButton("Add");
f.add(but);
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int height=0;
JTextField jtx = new JTextField();
jtx.setSize(new Dimension(70,20));
jtx.setPreferredSize(new Dimension(70,20));
p.add(jtf);
height+=20;
p.setSize(new Dimension(300, height));
p.setPreferredSize(new Dimension(300, height));
}
});
f.add(jsp, BorderLayout.CENTER);
f.setLocation(300, 300);
f.setVisible(true);
f.pack();
}
}