GridBagLayout权重和重叠组件

时间:2016-05-20 15:57:33

标签: java swing layout layout-manager gridbaglayout

假设我有一个JPanel GridBagLayout,就像这样:

-----------------------------------------------
|      |               |               |      |   
|      |Left JLabel 1  | Right JLabel 1|      |   
|      |               |               |      |   
|-glue-|Left JLabel 2  | Right JLabel 2|-glue-|
|      |               |               |      |   
|      |         Bottom JLabel         |      |   
|      |               |               |      |   
|                vertical glue                |   
-----------------------------------------------

左/右标签每个跨越1行和1列,而底部标签跨越1行和2列。两侧的水平胶水各3行1列。底部的垂直胶水跨越1行和4列。

每个标签都有weighty 1.0。此外,两侧的胶水也具有weighty 1.0。垂直胶水的weighty1.5。目前,当我在y方向调整面板大小时,垂直胶水大约占可用空间的3/5,整个上部大约占可用空间的2/5。

我的问题是,当胶水与按钮重叠(从y调整大小时)时,加权如何工作?如果没有胶水,按钮的总重量将为3.0:这是一个完全不同的调整大小的场景!如何实际计算重量(最高,平均,从调整大小的角度来看,',?)并使用?

1 个答案:

答案 0 :(得分:2)

嗯,计算相当复杂,所以谁知道究竟发生了什么。

我猜你会得到类似的东西:

  1. "垂直胶水"被认为是一行数据,所以它得到1.5。
  2. "胶水"组件被认为是另一行数据,所以它们得到1.0。
  3. 然后在"胶水中#34;组件,你有3行数据,每个数据获得.33分配给"胶水"组件。