0

ここにいくつかのコードがあり、ボタンが押されたときに、JPanelを拡張しようとしています。ただし、以前の高さのままです。これを行う方法はありますか、それとも作成時に設定された寸法に固定されていますか?

public class GUITest extends JFrame {

    JPanel jp;
    JButton one;

    public static void main(String[] args) {
        new GUITest();
    }

    public GUITest() {
        initWidgets();
    }

    public void initWidgets() {
        setSize(250, 250);
        setTitle("Stretch Panel Example");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        one = new JButton("Click me!");
        ActionListener extend = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < 80; i++) {
                    jp.setPreferredSize(new Dimension(200,(i+70)));
                }
                //System.out.println(jp.getHeight());
            }
        };
        one.addActionListener(extend);
        add(one, BorderLayout.NORTH);
        jp = new JPanel();
        jp.setBackground(Color.BLACK);
        jp.setPreferredSize(new Dimension(200,70));
        add(jp, BorderLayout.CENTER);
        setVisible(true);
    }

}
4

3 に答える 3

3

または、ボタンのクリック後に jpanel で revalidate() を呼び出すことができます

public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < 80; i++) {
                    jp.setPreferredSize(new Dimension(200,(i+70)));
                    **jp.revalidate();**
                }
                //System.out.println(jp.getHeight());
            }

明確にするために、寸法を変更したら、再描画する必要があります。モノは変更されましたが、その変更を視覚的に更新するように指示されていません

于 2013-02-06T16:28:31.610 に答える
0

validate()そのためには、メソッドを使用する必要があります。お役に立てれば幸いです!

すてきな一日を!

于 2013-02-06T16:27:46.680 に答える
0

これを試して:

jp.setSize(new Dimension(200,(i+70)));

それ以外の jp.setPreferredSize(new Dimension(200,(i+70)));

このコードでは、各クリックでサイズが 10 ずつ増加します。

ActionListener extend = new ActionListener() {
            int count=0;
            public void actionPerformed(ActionEvent e) {
                    count=count+10;
                    jp.setSize(new Dimension(100+count,70+count));  
                System.out.println("in listener");
            }
        };

もう1つ setPreferredsize は、コンポーネントが再検証されるたびに呼び出されるデフォルトのサイズです。クリックごとに setPreferredSize を変更するには:

   count=count+10;
                jp.setSize(new Dimension(100+count,70+count));  
        jp.setPreferredSize(new Dimension(100+count,70+count));
于 2013-02-06T16:33:36.843 に答える