如图,灰色背景的是我自定义的一个控件,派生自JPanel,里面添加了几个JButton.
其布局方式是:setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));深黄色部分就是JSplitPane的左侧的JPanel,默认的布局方式。现在问题是,我无法控制派生JPanel的宽度,我相让它和深黄色背景JPanel等宽,但是:
int w = this.panel1.getWidth();
panel1就是深黄色背景的JPanel,调试时,查看panel1的width属性,发现值为234,这和实际相符。但w却只有一百多,它是灰色背景派生JPanel的宽度!晕啊,本来是想获取到深黄色背景JPanel的宽度再去设置派生JPanel的宽度,但貌似返回的是其中子控件宽度。请大虾们指点一二啊

解决方案 »

  1.   

    JSplitPane 左侧 就是黄色背景的是什么? JPanel 布局管理器是什么? 估计是默认的 所以才这样 
      

  2.   

    问题主要原因找到了:首先不要使用现有布局方式,灵活性太差了。setLayout(null)就行了。接下来,最重要的就是:容器大小应该在addComponentListener函数中获取,直接在程序代码中得到的值是错误的。swing布局原始、低下。