2012-06-09 39 views
3

我对Swing很新,我正在尝试制作一个GUI。使用Netbeans的GUI创造者的东西,我设法做出了我喜欢的东西。但是这让我感觉很糟糕,因为我使用编辑器来做这件事,所以现在我正在尝试使用代码来制作相同的设计。 这是我想要做的事情的图片: what I want to make 现在我只关注创建“标准”部分(是的,我知道我在图片中拼写错了) 以下是我目前所拥有的: what I currently have 我以红色突出显示,我想增加保证金:Java FlowLayout - 特定元素的边距/填充?

  • 的文本框的权利之间,离开了标签
  • 的标准面板的顶部和JFrame的
  • 之间的
  • 之间的左和里ght面板和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实现此效果,请告诉我应该使用什么。

回答

19

摆动往往称为利润或边界'差距'。该FlowLayout类(与其他一些布局类一起)允许您设置的水平和垂直间距in its constructor,就像这样:

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

但这会增加标签和他们的文本框之间填充,但你可以将每一对包装在JPanel(可能是FlowLayout)。我会为此做一个自定义组件类。

+0

我听说过,但我只想改变某些元素之间的差距。例如,我想保留“Job”和第一个框之间的当前差距,但是扩展第一个框和“Box”之间的差距。 (但是这对JPanel和Frame之间的差距有帮助,所以谢谢) – fruitcup

+1

啊。我没有意识到有选择地做到这一点,但是你可以将每个标题和文本框包装在他们自己的JPanel中。我会做的是创建一个自定义组件(扩展JPanel),其中包含某种布局(可能是FlowLayout)中的标题和文本框,然后将它们添加到主FlowLayout面板。 –

+0

工作出色。您应该更新您的答案以包含该内容,然后我会将其标记为已接受。谢谢。 :) – fruitcup

8

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