Java FlowLayout-特定元素的边距/填充?

Java FlowLayout-特定元素的边距/填充?,java,swing,padding,layout-manager,gaps-in-visuals,Java,Swing,Padding,Layout Manager,Gaps In Visuals,我对Swing非常陌生,我正在尝试制作一个GUI。 通过使用Netbeans的GUI创建者,我成功地制作了我喜欢的东西。但是,我使用编辑器来实现这一点让我感觉很糟糕,所以现在我正试图使用代码来实现同样的设计。 以下是我正在尝试制作的图片: 现在我只专注于创建“标准”部分(是的,我知道我在图片中拼写错了) 以下是我目前掌握的情况: 我用红色突出显示了我想增加边距的地方: 在文本框的右侧和标签的左侧之间 在“条件”面板顶部和JFrame之间 面板左右两侧与机架之间 我来自网络开发公司,我想做的就

我对Swing非常陌生,我正在尝试制作一个GUI。 通过使用Netbeans的GUI创建者,我成功地制作了我喜欢的东西。但是,我使用编辑器来实现这一点让我感觉很糟糕,所以现在我正试图使用代码来实现同样的设计。 以下是我正在尝试制作的图片: 现在我只专注于创建“标准”部分(是的,我知道我在图片中拼写错了) 以下是我目前掌握的情况: 我用红色突出显示了我想增加边距的地方:

  • 在文本框的右侧和标签的左侧之间
  • 在“条件”面板顶部和JFrame之间
  • 面板左右两侧与机架之间
我来自网络开发公司,我想做的就是增加利润。如果这是不正确的术语,请通知我。 以下是我当前使用的代码:

public class Criteria extends JPanel {
    JLabel JobLabel = new JLabel();
    JLabel BoxLabel = new JLabel();
    JLabel PartLabel = new JLabel();
    JTextField JobInput = new JTextField();
    JTextField BoxInput = new JTextField();
    JTextField PartInput = new JTextField();

    public Criteria() {
        setLayout(new FlowLayout(FlowLayout.LEADING));
        setBorder(BorderFactory.createTitledBorder("Criteria"));
        JobLabel.setText("Job");
        JobLabel.setLabelFor(JobInput);
        BoxLabel.setText("Box");
        BoxLabel.setLabelFor(BoxInput);
        PartLabel.setText("Part");
        PartLabel.setLabelFor(PartInput);
        JobInput.setColumns(8);
        BoxInput.setColumns(8);
        PartInput.setColumns(8);
        add(JobLabel);
        add(JobInput);
        add(BoxLabel);
        add(BoxInput);
        add(PartLabel);
        add(PartInput);
    }
}

我不知道如何为这些组件增加利润,因此非常感谢您的帮助。如果我不能用FlowLayout实现这种效果,那么请告诉我应该用什么来代替。

Swing倾向于将边距或边框称为“间隙”。
FlowLayout
类(以及一些其他布局类)允许您设置水平和垂直间隙,如下所示:

private static final int PADDING = 3;   // for example
...
    setLayout(new FlowLayout(FlowLayout.LEADING, PADDING, PADDING));

但是,这会在标签和它们的文本框之间添加填充,但是您可以将每一对都包装在
JPanel
(可能使用
FlowLayout
)中。我将为此创建一个自定义组件类。

您应该考虑使用EmptyBorder为组件提供“填充”。如果在JPanel或其他组件周围需要多种类型的边框,可以创建复合边框或嵌套JPanel。对于组件之间的间隙,可以使用上面提到的FlowLayout设置,也可以使用Box类中的支柱。

我听说过,但是我只想更改某些元素之间的间隙。例如,我想保持“Job”和第一个框之间的当前间隙,但要扩大第一个框和“box”之间的间隙。(不过这确实有助于缩小JPanel和框架之间的间隙,所以谢谢)啊。我不知道有什么方法可以选择性地这样做,但是你可以把每个标题和文本框包装在它们自己的JPanel中。我要做的是创建一个自定义组件(扩展JPanel),在某种布局(可能是FlowLayout)中包含标题和文本框,然后将它们添加到主FlowLayout面板中。这非常有效。你应该更新你的答案,将其包括在内,然后我会将其标记为接受。谢谢。:)