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

22

我想要给一些 JPanel 添加填充。我找到了这个答案:https://dev59.com/u2435IYBdhLWcg3wlRIf#5328475

对于没有边框的面板,它运行良好。但是如果面板已经有了边框,例如 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);

简而言之:为应该具有TitledBorder的面板添加EmptyBorder,然后创建另一个带有TitledBorder的面板,并将第一个面板添加到其中,最后使用那个面板。

但是,我得到了太大的填充,忽略了EmptyBorder的构造器值。

那么我如何为带有图形边框的JPanel添加填充?


2
+1,感谢您在发布问题之前所做的辛勤工作 :-) 尽管如先前所述,这需要一些时间。 - nIcE cOw
1个回答

39

您可以查看CompoundBorder

CompoundBorder是一个组合边框类,用于将两个边框对象组合成一个单一的边框,通过将内部边框对象嵌套到外部边框对象的插图中。例如,可以使用此类向具有现有装饰边框的组件添加空白边距空间:

Border border = comp.getBorder();
Border margin = new EmptyBorder(10,10,10,10);
comp.setBorder(new CompoundBorder(border, margin));
当然,您也可以使用BorderFactory#createCompoundBorder(border, margin)

3
谢谢,“CompoundBorder”正是我所需要的! - jobukkit

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