Swing布局依赖于容器

时间:2013-09-17 17:27:37

标签: java swing grouplayout

为什么GroupLayout需要一个Container作为构造函数的参数,而BorderLayout不需要?

我不确定Container对象添加了哪些信息以及BorderLayout不需要该信息的原因。

1 个答案:

答案 0 :(得分:2)

看到这个的最好方法是查看来源。 GroupLayout构造函数将Component(不是您所说的容器)保存到名为host的字段中。然后在这些方法中使用该字段:

javax.swing.GroupLayout#adjustSize
javax.swing.GroupLayout#checkParent
javax.swing.GroupLayout#getComponentInfo
javax.swing.GroupLayout#invalidateHost
javax.swing.GroupLayout#isLeftToRight
javax.swing.GroupLayout#replace
javax.swing.GroupLayout.AutoPreferredGapSpring#calculatePadding
javax.swing.GroupLayout.ContainerAutoPreferredGapSpring#calculatePadding
javax.swing.GroupLayout.ContainerAutoPreferredGapSpring#updateSize
javax.swing.GroupLayout.PreferredGapSpring#getPadding

这些方法中的每一种都需要知道Component是谁。例如,adjustSize使用Component的插图来计算大小。