class A extends JFrame{
     private TextArea txa=new TextArea();
     private TextField txf=new TextField();
     public static void main(String[] arges){
     new A().initialize();
}
    public void initialize(){
    this.setLocation(400,300),
    setSize(300,300);
    add(txa,BorderLayout.NORTH);
    add(txf,BorderLayout.SOUTH);
    pack()
    setVisible(true);}
}
这样的话JFrame大小正好为300*300,但如果我把TextArea改为JTextArea,把TextField改为JTextField,JFrame的大小怎么会变了呢?大侠帮帮我

解决方案 »

  1.   

    this.setLocation(400,300), 
        setSize(300,300); 放在   pack();后面就可以了。
      

  2.   

    用netbeans 做一做不就知道了。
      

  3.   

    把setSize(300,300); 放最后就行了
      

  4.   

    awt和swing两个的显示系统导致的,最后不要混用
      

  5.   

    public void pack()调整此窗口的大小,以适合其子组件的首选大小和布局
    所以在其后面设置大小.
      

  6.   

    主要是由于两种情况LayoutManager.preferredLayoutSize(Container)计算出来的PreferredSize不一样吧
    根据PreferredSize容器再去fit 可以看见同一容器和布局及子组件,pack前后PreferredSize都有不同
      

  7.   

    如果是这样的话 应该也不一定会是300*300吧,pack自动调整大小那你的setSize也就失去所用了吧,同意大家的把pack注了吧