用add方法把一个button加到frame中时,显示出来的大小是怎么样的?
如果要更改button的大小该怎么办(button的setsize()方法应该在什么时候调用,好象在add之前调用不起效果),还有button的大小是否还受不同的布局管理器的影响.
请各位前辈指点一二,(或者推荐一些能够解决我的疑惑的材料)多谢!

解决方案 »

  1.   

    JFrame的默认布局管理器是BorderLayout,默认被添加的组件会占据整个中部区域。
    不同的布局管理器会影响组件的尺寸,你可以挨个试一试,这个要自己体验才行。
    可以通过下面三个方法设置组件尺寸
    void setMaximumSize(Dimension maximumSize) 
    void setMinimumSize(Dimension minimumSize)  
    void setPreferredSize(Dimension preferredSize)
      

  2.   

    多谢,chenweionline(键盘上的舞者)
    public class myFrame extends Frame{
      public myFrame(){
       super("myFrame");
       setSize(30,30);
       Button btn=new Button("btn");
       btn.setSize(20,10);
       setVisible(true); 
      }
      public static void main(String[] args)
      {
       new myFrame();
       }
    }
    //这样显示出来的btn的大小为什么不是所设置的大小(20,10)啊.
      

  3.   

    Frame有默认的布局.改成NULL就可以啦,不过你上面的代码没把btn添加进去,哈哈
      

  4.   

    我想到一个办法,自己定义一个Panel    private class MyPanel extends Panel{
         public Dimension getPrefferedSize(){
         return new Dimension(20,20);
         }
        
         public Dimension getMaximumSize(){
         return new Dimension(20,20);
         }
        
         public Dimension getMinimumSize(){
         return new Dimension(20,20);
         }
        }
    然后把Button加进去, 再把该Panel加到窗体中。至于setSize为什么没有作用, 我现在也没有搞明白, 查文档中
      

  5.   

    你在显示之前加一句validate();这个看看
      

  6.   

    为什么awt没有檫除重量级组件的背景,
    我写了一个类myButton,继承自Button类,没有重写它的update()方法,
    为什么调用repaint()后,awt在paint()之前没有先檫除此按钮的背景.
    而如果是系统出发(System-triggered paint)则会在执行paint()之前
    看到背景先被檫除了.哪位对awt的paint()机制了解的帮我解决,谢谢了!还有,当把一个Button放入Frame中时,第一次调用Frame.show()时,
    谁负责画出按扭来(应该不是Button.paint()吧,因为在paint()执行之前
    按扭已经显示出来了(在paint调用之前,就已经可以看到按扭上面的标签).
    而paint()只是接着在那上面执行绘图.