我在 Java Swing 中遇到一个简单的问题。我将代码简化为以下代码片段。我不确定如何最小化水平 JSeperator 与下一个 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
?
谢谢。
Okay, this is the window generated from the code posted above:
您可以看到 JSeparator 和 JTextField 之间的空间非常宽。
缺席你的sscce,问题似乎出在您未显示的代码中。父容器的布局或pack()
可能涉及。请注意,默认布局JFrame
is BorderLayout
;默认位置是CENTER
。这是一个sscce与您的代码进行比较。
附录:评论您的父母GroupLayout
面板是另一个JPanel
,你问了以下问题,
你知道如何在我的情况下做到这一点吗?
是的,请提供随附的JPanel
合适的布局,例如GridLayout
如下所示。后者的行为很像BorderLayout.CENTER
of the JFrame
在这方面。
import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
/** @see http://stackoverflow.com/questions/6769722 */
public class GroupPanel extends JPanel {
private final JButton button = new JButton("Start");
private final JSeparator jSeparator = new JSeparator();
private final JTextField jTextField = new JTextField(10);
public GroupPanel() {
GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(layout.createParallelGroup()
.addComponent(button)
.addComponent(jSeparator)
.addComponent(jTextField)
);
layout.setVerticalGroup(layout.createSequentialGroup()
.addComponent(button, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(jSeparator, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
);
}
private static void display() {
JFrame f = new JFrame("GroupPanel");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(1, 0));
f.add(new GroupPanel());
f.add(new GroupPanel());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
display();
}
});
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)