【问题标题】:Java FlowLayout - Margin/padding of specific elements?Java FlowLayout - 特定元素的边距/填充?
【发布时间】:2012-06-13 09:37:57
【问题描述】:

我对 Swing 很陌生,我正在尝试制作一个 GUI。 使用 Netbeans 的 GUI 创建器,我设法制作了我喜欢的东西。但是我为此使用编辑器让我感觉很糟糕,所以现在我正在尝试使用代码进行相同的设计。 这是我正在尝试制作的图片: 现在我只专注于创建“标准”部分(是的,我知道我在图片中拼写错误) 这是我目前所拥有的: 我用红色突出显示了我想增加边距的地方:

  • 在文本框的右侧和标签的左侧之间
  • 在 Criteria 面板顶部和 JFrame 之间
  • 面板左右两侧与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 达到这个效果,那么请告诉我应该改用什么。

【问题讨论】:

    标签: java swing padding layout-manager gaps-in-visuals


    【解决方案1】:

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

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

    不过,这会在标签及其文本框之间添加填充,但您可以将每一对包装在 JPanel 中(可能使用 FlowLayout)。我会为此制作一个自定义组件类。

    【讨论】:

    • 我听说过,但是我只想更改某些元素之间的间隙。例如,我想保持“Job”和第一个框之间的当前差距,但扩大第一个框和“框”之间的差距。 (但是这确实有助于消除 JPanel 和 Frame 之间的差距,所以谢谢)
    • 啊。我不知道有任何方法可以选择性地执行此操作,但您可以将每个标题和文本框包装在它们自己的 JPanel 中。我要做的是创建一个自定义组件(扩展 JPanel),其中包含某种布局(可能是 FlowLayout)中的标题和文本框,然后将它们添加到您的主 FlowLayout 面板。
    • 效果很好。您应该更新您的答案以包含该答案,然后我会将其标记为已接受。谢谢你。 :)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      相关资源
      最近更新 更多