将JSeparator放入Java Swing后的间隙大小

时间:2011-07-20 23:27:24

标签: java swing grouplayout

我在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

谢谢。

好的,这是从上面发布的代码生成的窗口: enter image description here

您可以看到JSeparator和JTextField之间的空间非常宽。

2 个答案:

答案 0 :(得分:3)

如果没有您的sscce,则问题似乎出现在您未显示的代码中。可能涉及父容器的布局或pack()。请注意,JFrame的默认布局为BorderLayout;默认位置为CENTER。这是一个sscce,用于比较您的代码。

附录:在评论您的GroupLayout小组的父级是另一个JPanel时,您询问了以下内容,

  

你知道如何在我的情况下完成这项工作吗?

是的,给封闭的JPanel一个合适的布局,例如GridLayout如下所示。在这方面,后者的行为与BorderLayout.CENTER的{​​{1}}非常相似。

GroupPanel

JFrame

答案 1 :(得分:2)

在垂直布局中,按以下方式添加分隔符:

addComponent(separator, GroupLayout.PREFERRED_SIZE,
             GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)