1

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

1 に答える 1

0

ボタンを追加し、ボタン命令内にテキストフィールドを作成する命令セットを追加することができます。複数回必要な場合は、ユーザーがテキストフィールドを追加した最後の場所を示す位置ポインターを処理する必要があります。ユーザーにテキストの位置を制御させたい場合は、ポインターを更新することにより、ユーザーは別の場所でテキストを見ることができます。次に、彼はその場所に入る必要があります。

于 2013-09-01T12:59:54.947 に答える