- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试为计算器 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/
我正在学习 Swings,我对这一行感到困惑 GroupLayout layout=new GroupLayout(getContentPane()); 现在我有两个问题 getContentPane
我正在尝试使用 NetBeans 7.0 中的 GroupLayout,但我根本无法选择它。我确实去了 Properties/Libraries/Wrapped JARs/swing-layout-1
我正在使用 SWING 创建一个 Java 应用程序作为 UI。我对 LayoutManager 的选择是 GroupLayout,但现在我遇到了组件问题。 基本布局由三列和两行组成(有嵌套行,如下面
public class Grouplayout implements Runnable { public static void main(String[] args) { SwingUti
public static class MyDictionaryFrame extends JFrame { public MyDictionaryFrame() { JLab
就像您在图片中看到的那样,复选框不在行中。如何将它们放在标签和组合框所在的行中?复选框激活在数据库中搜索值的能力。在代码中,复选框被命名为“MesswerBox[number]”。 G
这里我添加了按钮,但没有一个按钮显示在我的框架上另外,当我单独添加按钮时,它们会相互重叠我应该怎么办有人可以在我的代码中发现问题吗我被推荐到这个网站:https://weblogs.java.net/
最左边的列是我在这里引用的内容: 大约一周前,我说服我爸爸放弃 Windows 10,转而使用 Linux Mint。考虑到他多么喜欢简单的界面,到目前为止,转变相当坎坷。他不愿意使用命令行,所以我花
我一直在尝试制作一个程序,允许用户创建可以使用 JSliders 设置的颜色的正方形和圆形。我正在尝试使用 GroupLayout 来设置它,但它没有按照它看起来应该的方式工作。 我希望圆形、方形和颜
我正在尝试创建一个扫雷类型的游戏,并围绕顶部的 GridLayout 和底部的 JPanel 设计了界面。我在底部的信息面板上安排 JComponents 时遇到问题。我正在使用 GroupLayou
我有一个包含按钮的 JScrollPane。我需要两组这样的按钮。 *-----------------------------------------------* | Button 1 |
组件应该这样布局: (A) +--------------------+ |标签1 文本字段1 | |标签2文本字段2 | |标签3 文本字段3 | +--------------------+ 但是
我一直在使用 GridBagLayout,但最近转向了 GroupLayout。下面是我拥有的和我需要的屏幕截图。然后是代码。 我需要改变什么? 我有什么 我需要什么 我认为我应该使用 TRAILIN
我在根据需要在 Java 中设置 GroupLayout 时遇到问题。 我的代码如下。组件的理想位置是: +++++++++++++++++++++++++++++++++++++++++++++++
我正在尝试创建一个前面带有 GroupLayout 的小型 Jpanel。关注了documentation尽可能多地查看了一些 StackOverflow 问题,我仍然被困住了。 错误如下: Exce
不确定为什么会出现此错误。我正在使用 GroupLayout,因为我希望它为我设置间距,并且将来会在框架中添加更多面板。下面是堆栈跟踪。 Exception in thread "main" java
对于我正在制作的计算器应用程序的 GUI,我有一个 JButton 对象网格,其中所有对象的大小相同,除了一个的宽度是其他对象的两倍。它应该看起来像这样(除了线条是直的): 我的第一个想法是定义 JB
我正在尝试创建一个类,它扩展 JFrame 并使用 GroupLayout,但我找不到如何做到这一点。对于 JPanel 来说非常简单: GroupLayout layout=new GroupLay
在许多情况下,GroupLayout 可能包含具有简单结构的片段。例如,编写类似 AlignedStack 对象的东西似乎是明智的,该对象允许用户将一堆组件/组/间隙组合在一起,构成左/中/右对齐的垂
我的 GroupLayout 有问题。我的代码是: public chat () { JTextField chatbox; JTextField msgbox;
我是一名优秀的程序员,十分优秀!