首先要继承Jcomponent类> JButton、JLabel等Component的大小会随着自己的Caption变化
 
  那是因为他们在getPreferedSize()中计算了自己应该占多大size比较好,当然如果想要更完善的话,还要实现getMaximumSize()和getMinimunSize()
  
  LayoutManager会调用这些方法来进行布局。> 固定大小的Component?
  这个有很多方法,比如重写setBounds(Rectanle)方法。 或者结合LayoutManager来做。
  你可以参考javax.swing.Box的source

解决方案 »

  1.   

    楼上说得没错。更简单的,你设计你想要的component直接继承和它相仿的系统已有的 component
    然后重载楼上说的那些方法实现固定大小--不过,不见得能固定。
    因为容器不见得容许你这么做,除非你也重载容器以下,但是这样属于特殊问题,没有实用性了。
      

  2.   

    刚看完JLabel和JButton的源代码,发现要是自己写一个从JComponent派生的Component,实在是太类了。要针对不同的Platform写不同的UI,不过有一点没看明白的是:Component怎么和UI联系在一起?Component::setUI的方法由谁来调用?没有下载到《Java 2 图形设计 Volumn II》,不知道Swing的原理,谁能提供个下载地址?多谢先!