学着用了几天swing的layout,有点手忙脚乱了有3个JPanel:panel_1、panel_2和pnale_3。
panel_1用BoxLayout(Y_AXIS),panel_2和panel_3依次放在panel_1里。不管我用panel_2.setSize()还是panel_2.setPreferredSize(),panel_2和panel_3依然是一样大请问为什么会这样?该怎样做才能调整panel_2和panel_3的大小?谢谢另外,关于swing的layout,有没有什么参考资料呢?

解决方案 »

  1.   

    layout(null)不用布局管理器
    所有panel的大下都自己setSize
    所有空间的位置都自己设置
      

  2.   

    BoxLayout 试图按照组件的首选宽度(对于水平布局)或首选高度(对于垂直布局)来排列它们。对于水平布局,如果并不是所有的组件都具有相同的高度,则 BoxLayout 会试图让所有组件都具有最高组件的高度。如果对于某一特定组件而言这是不可能的,则 BoxLayout 会根据该组件的 Y 调整值对它进行垂直调整。默认情况下,组件的 Y 调整值为 0.5,这意味着组件的垂直中心应该与其他 Y 调整值为 0.5 的组件的垂直中心具有相同 Y 坐标。同样地,对于垂直布局,BoxLayout 试图让列中的所有组件具有最宽组件的宽度。如果这样做失败,则 BoxLayout 会根据这些组件的 X 调整值对它进行水平调整。对于 PAGE_AXIS 布局,基于组件的开始边水平调整。换句话说,如果容器的 ComponentOrientation 表示从左到右,则 X 调整值为 0.0 意味着组件的左边缘,否则它意味着组件的右边缘。
      

  3.   

    不可以试试设置成BorderLayout 然后用panel_2.setPreferredSize()设置面板的大小,这样就可以了
    你看看这个http://wenku.baidu.com/view/4e2c0b72f242336c1eb95e00.html