如何向带有边框的 JPanel 添加填充

Posted

技术标签:

【中文标题】如何向带有边框的 JPanel 添加填充【英文标题】:How to add padding to a JPanel with a border 【发布时间】:2013-07-29 08:03:34 【问题描述】:

我想为一些JPanels 添加填充。我找到了这个答案:https://***.com/a/5328475/1590323

它适用于没有边框的面板。但是对于已经有边框的面板,我该怎么做呢? (在这种情况下为TitledBorder

我试过了:

JPanel mypanel = new MyPanel(); // Panel that I am going to add a TitledBorder to, but needs padding
mypanel.setBorder(new EmptyBorder(10,10,10,10));
JPanel mypanel_container = new JPanel();
TitledBorder border = BorderFactory.createTitledBorder(BorderFactory.createRaisedBevelBorder(), "My panel");
border.setTitleJustification(TitledBorder.LEADING);
mypanel_container.setBorder(border);
mypanel_container.add(mypanel);
this.add(mypanel_container);

(简而言之:将EmptyBorder 添加到应该具有TitledBorder 的面板中,然后使用TitledBorder 制作另一个面板并将第一个面板添加到其中,然后使用该面板)

但后来我得到了太大的填充,忽略了 EmptyBorder 的构造函数值。

那么如何为带有图形边框的 JPanel 添加内边距?

【问题讨论】:

+1,感谢您在发布问题之前所做的辛勤工作:-) 不过,如前所述,这将在一段时间内完成 【参考方案1】:

你可以看看CompoundBorder

一个复合边框类,用于将两个边框对象组合成一个 通过将内部 Border 对象嵌套在 一个外部边框对象。例如,这个类可以用来添加 具有现有装饰边框的组件的空白边距:

Border border = comp.getBorder();
Border margin = new EmptyBorder(10,10,10,10);
comp.setBorder(new CompoundBorder(border, margin));

当然,你也可以使用BorderFactory#createCompoundBorder(border, margin)

【讨论】:

谢谢,CompoundBorder 正是我所需要的!

以上是关于如何向带有边框的 JPanel 添加填充的主要内容,如果未能解决你的问题,请参考以下文章

如何将边框添加到内容模式设置为方面填充的 UIImage

带有填充的边框垂直或水平中心上的图像

如何在IOS中制作带有圆形边框的填充UILabel

如何在 jPanel 上设置边框?

将具有彩色边框的JPanel按特定顺序放置,使它们看起来像网格

制作带有边框和填充的菱形图像