gpt4 book ai didi

Java - 在 GroupLayout 中混合组件大小

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:42 25 4
gpt4 key购买 nike

我正在尝试为计算器 GUI 安排两组按钮。每个人都使用 GroupLayout 来制作它们。一组是数字(和“.”),另一组是操作按钮。这基本上是有效的,但如果其中一个按钮的长度加倍(例如我的操作集上的等号按钮),它会使其他按钮脱节。我将以操作集为例。有两列和四行按钮。最后一行只有一个按钮 - 等于。我想让这个双倍长度延伸到两列。目前,当我希望第二列位于它的顶部时,它只是将第二列推到它的末尾。

这是布局的代码 - operLayout 是操作布局的名称,第一行是左右括号,第二行是 + 和 -,第三行是 * 和/,最后一行是 equals。每个按钮都在别处设置了 minimumSize(除了 equals 的长度是其两倍之外,它们都是相同的)。

operLayout.setAutoCreateGaps(true);
operLayout.setAutoCreateContainerGaps(true);
operLayout.setVerticalGroup(operLayout
.createSequentialGroup()
.addGroup(
operLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(leftBracket)
.addComponent(rightBracket))
.addGroup(operLayout.createParallelGroup().addComponent(add).addComponent(subtract))
.addGroup(operLayout.createParallelGroup().addComponent(multiply).addComponent(divide))
.addGroup(operLayout.createParallelGroup().addComponent(equals)));
operLayout.setHorizontalGroup(operLayout
.createSequentialGroup()
.addGroup(
operLayout.createParallelGroup().addComponent(leftBracket).addComponent(add)
.addComponent(multiply).addComponent(equals))
.addGroup(
operLayout.createParallelGroup().addComponent(rightBracket).addComponent(subtract)
.addComponent(divide)));

我明白为什么会这样,但我不确定如何解决。有简单的方法吗?或者我应该改变我做这件事的方式吗?谢谢

最佳答案

equals 组件放在它自己的平行水平组中。

首先,确保在使用 GroupLayout 时使用一致的缩进。我发现这对于跟踪正在发生的事情绝对至关重要。

您之所以看到所报告的行为,是因为等号与第一列按钮属于同一水平平行组。所以当你把它加倍宽时,它会将第二列按钮推到右边。这正是您告诉它要做的,因为您告诉它留在第一个平行组(列)中。

为了获得您想要的行为,您必须单独布局该按钮,使其与其他按钮平行。您可以通过将它放在自己的平行组中来做到这一点。为了获得最佳行为,您可能还想对该组进行调整。我认为 GroupLayout.Alignment.CENTER 是您想要的。

另请注意,如果其中只有一个组件,则无需创建新组。只需添加该组件即可。

operLayout.setVerticalGroup(operLayout.createSequentialGroup()
.addGroup(operLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(leftBracket)
.addComponent(rightBracket))
.addGroup(operLayout.createParallelGroup()
.addComponent(add)
.addComponent(subtract))
.addGroup(operLayout.createParallelGroup()
.addComponent(multiply)
.addComponent(divide))
.addComponent(equals));
operLayout.setHorizontalGroup(operLayout.createParallelGroup()
.addGroup(operLayout.createSequentialGroup()
.addGroup(operLayout.createParallelGroup()
.addComponent(leftBracket)
.addComponent(add)
.addComponent(multiply))
.addGroup(operLayout.createParallelGroup()
.addComponent(rightBracket)
.addComponent(subtract)
.addComponent(divide)))
.addComponent(equals));

关于Java - 在 GroupLayout 中混合组件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com