Java中的JPanel填充问题

123

我有一个关于Java Swing应用程序格式的问题。这应该是相当简单的,但我很难找到任何帮助(每个主题似乎都涉及删除 JPanel 中的任何默认填充)。

我的各种 JPanels 中的文本贴紧边框:我如何添加填充?

4个回答

269

在你的JPanel周围设置一个EmptyBorder
示例:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));

55
您可以在现有边框周围增加一些额外的填充:p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder())); - Synox
当窗口被调整大小时会发生什么?那么这个解决方案就不好了,是吗? - Andrew S
@Synox 确实是个传奇!请注意,您可以将EmptyBorder作为最后一个参数放置以进行内部填充。 - Hunter S

4

通常情况下,当你需要在 JPanel 内添加内边距时,可以通过使用布局管理器来实现。但有时候,你也可以通过扩展 JPanel 的边框来实现。


1
将填充添加到布局管理器(在我的情况下,GridLayout)会在相邻的面板之间添加填充,但不会在单个面板内部添加。但是一个边框可以解决问题,感谢您的帮助。 - Connor

3
我假设您的JPanel包含JTextField,以便进行演示。
这些组件提供了JTextComponent#setMargin()方法,这似乎是您要寻找的内容。
如果您正在寻找围绕文本的任何大小的空边框,则可以使用EmptyBorder

1
JPanel p=new JPanel();  
GridBagLayout layout=new GridBagLayout(); 
p.setLayout(layout); 
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL; 
gbc.gridx=0;   
gbc.gridy=0;   
p2.add("",gbc);

您的回答可以通过提供更多支持信息来改进。请[编辑]以添加进一步的细节,例如引用或文档,以便他人可以确认您的答案是否正确。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - moken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接