如何向带有边框的 JPanel 添加填充
Posted
技术标签:
【中文标题】如何向带有边框的 JPanel 添加填充【英文标题】:How to add padding to a JPanel with a border 【发布时间】:2013-07-29 08:03:34 【问题描述】:我想为一些JPanel
s 添加填充。我找到了这个答案: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 添加填充的主要内容,如果未能解决你的问题,请参考以下文章