ChatGPT解决这个技术问题 Extra ChatGPT

Java中的JPanel填充

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

我的各种 JPanel 中的文本拥抱侧面和顶部,触摸彩色边框:如何添加填充?


N
Nateowami

JPanel 周围设置一个 EmptyBorder
示例:

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

或者您可以在现有边框周围有一些额外的填充:p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
调整窗口大小时会发生什么?那么这个解决方案不好是吗?
@Synox Legend 确实!请注意,您可以将 EmptyBorder 作为内部填充的最后一个参数
j
jzd

当您需要在 JPanel 内填充时,通常您使用正在使用的布局管理器添加填充。在某些情况下,您可以只扩展 JPanel 的边框。


向布局管理器(在我的例子中为 GridLayout)添加填充会在相邻面板之间添加填充,但不会在单个面板中添加。但是边框就可以了,谢谢你的帮助。
R
Riduidel

为了演示,我假设您的 JPanel 包含 JTextField。

这些组件提供了 JTextComponent#setMargin() 方法,这似乎是您正在寻找的。

如果您要在文本周围寻找任意大小的空白边框,那么请使用 EmptyBorder


N
Nir Levy
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);