【发布时间】:2012-12-07 04:23:21
【问题描述】:
我正在尝试为计算器 GUI 安排两组按钮。每个人都使用 GroupLayout 来制作它们。一组是数字(和“.”),另一组是操作按钮。这基本上是可行的,但如果其中一个按钮的长度是双倍的(例如我的操作集上的等号按钮),它会使其他按钮不合时宜。 我将以操作集为例。有两列四行按钮。最后一行只有一个按钮 - 等于。我想让这个双倍长度延伸到两列。目前,当我希望第二列放在它上面时,它只是将第二列推到它的末尾。
这是布局的代码 - operLayout 是操作的布局名称,第一行是左右括号,第二行是 + 和 -,第三行是 * 和 /,最后一行是等于。每个按钮在其他地方都有一个 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)));
我明白为什么会发生这种情况,但我不确定如何解决。有简单的方法吗?还是我应该改变我做事的方式?谢谢
【问题讨论】:
-
我为您选择
GroupLayout来完成这项任务表示赞赏。我相信这种布局是最强大的标准表单布局。它很容易被忽视,因为它使用起来很复杂。在了解了它的工作原理后,我几乎只使用它。 -
可以重新格式化您的代码吗?当前;y 它相当难以阅读。
-
是的,请这样做,尽管有人可能已经打败了你。谢谢@ErickRobertson,我知道你的意思,它看起来很复杂,但一旦你理解它,它真的很有用!
标签: java swing components grouplayout preferredsize