请教jframe在执行完哪个方法后jframe里面放置的组件的大小确定下来了?

解决方案 »

  1.   

    JFrame f = new JFrame();
    JButton b = new JButton("测试");
    f.getContentPane().add(b);
    f.setSize(400,300);
    f.setSize(600,400);
    f.setVisible(true);当执行f.setSize(400,300)和执行f.setSize(600,400),b的大小是不一样的,请问在jframe执行完哪个方法b的大小确定下来了?
      

  2.   

    [code=Java]
    f.setSize(600,400);
    code]
      

  3.   

    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;public class TestSize extends JFrame{
        JButton b = new JButton("测试") ;
        public TestSize() {
            getContentPane().add(b);
            b.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    System.out.println("TestSize actionPerformed:" + b.getSize()+"="+b.getPreferredSize());
                }
            });
        }
        
        public void setSize(int w,int h){
            super.setSize(w,h);
            System.out.println("TestSize setSize:" + b.getSize()+"="+b.getPreferredSize());
        }
        
        
        public static void main(String[] args) {
            JFrame f = new TestSize();
            f.setSize(600,400);
            f.setVisible(true);
        }
    }得到的结果
    TestSize setSize:java.awt.Dimension[width=0,height=0]=java.awt.Dimension[width=60,height=27]
    TestSize actionPerformed:java.awt.Dimension[width=592,height=366]=java.awt.Dimension[width=60,height=27]