我正在尝试正确使用不同的 LayoutManager,通过详细了解幕后发生的事情,使我的 GUI 设计技能更加高效和有效。我正在查看 BorderLayout 的源代码,在下面从 layoutContainer() 方法获取的代码片段中,我注意到对子组件的 setSize() 方法的调用,然后是 setBounds()。查看 Component 的这些方法的源代码,setSize() 实际上使用 Component.x 和 Component.y 的当前值调用 setBounds()。为什么这样做(而不是完全重复)?setBounds() 调用不会完全覆盖 setSize() 调用的结果吗?
if ((c=getChild(NORTH,ltr)) != null) {
c.setSize(right - left, c.height);
Dimension d = c.getPreferredSize();
c.setBounds(left, top, right - left, d.height);
top += d.height + vgap;
}
谢谢。