我在Java Swing中有一个简单的问题。我将代码简化为以下代码段。我不确定如何最小化水平JSeparator与下一个JTextField之间的间隙大小,因为当前代码在两者之间产生巨大差距。
GroupLayout layout = new GroupLayout(jPanel1);
jPanel1.setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup()
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createSequentialGroup()
.addComponent(button)
))
.addComponent(jSeparator)
.addComponent(jTextField)
);
layout.setVerticalGroup(layout.createSequentialGroup()
.addComponent(button)
.addComponent(jSeparator)
.addComponent(jTextField)
);
而且一般来说,如何将间隙大小控制为任何整数表示的值,而不是使用addPreferredGap
?
谢谢。
好的,这是从上面发布的代码生成的窗口:
您可以看到JSeparator和JTextField之间的空间非常宽。
答案 0 :(得分:3)
如果没有您的sscce,则问题似乎出现在您未显示的代码中。可能涉及父容器的布局或pack()
。请注意,JFrame
的默认布局为BorderLayout
;默认位置为CENTER
。这是一个sscce,用于比较您的代码。
附录:在评论您的GroupLayout
小组的父级是另一个JPanel
时,您询问了以下内容,
你知道如何在我的情况下完成这项工作吗?
是的,给封闭的JPanel
一个合适的布局,例如GridLayout
如下所示。在这方面,后者的行为与BorderLayout.CENTER
的{{1}}非常相似。
JFrame
答案 1 :(得分:2)
addComponent(separator, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)