【问题标题】:GridBagLayout Weights and Overlapping ComponentsGridBagLayout 权重和重叠组件
【发布时间】:2016-05-20 15:57:33
【问题描述】:

假设我有一个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 列。

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

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

【问题讨论】:

    标签: java swing layout layout-manager gridbaglayout


    【解决方案1】:

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

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

    1. “垂直粘合”被认为是一行数据,因此它得到 1.5。
    2. “粘合”组件被视为另一行数据,因此它们得到 1.0。
    3. 然后,在“粘合”组件中,您还有 3 行数据,它们每行获得分配给“粘合”组件的 0.33 空间。

    【讨论】:

    • 感谢您回答我的问题,但“谁知道到底发生了什么”:确实是谁? SO上有没有Java语言开发人员? :) 另外,我在问题中给出的示例非常简单,但是如果胶水和按钮仅部分重叠怎么办?如果有多个列不同程度重叠怎么办?
    • but what if the glue and buttons only partially overlap? - 也就是说,它会变得更加复杂。我总是建议使用带有适当布局管理器的嵌套面板,而不是尝试使用单个布局管理器强制布局。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2019-01-26
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多