如何将填充添加到带边框的JPanel

时间:2013-07-29 13:39:23

标签: java swing jpanel border padding

我想为某些JPanel添加填充。我找到了这个答案:https://stackoverflow.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 个答案:

答案 0 :(得分:29)

您可以查看CompoundBorder

  

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

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

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