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

我想为一些JPanels 添加填充。我找到了这个答案: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,感谢您在发布问题之前所做的辛勤工作:-) 不过,如前所述,这将在一段时间内完成

标签: java swing jpanel border padding


【解决方案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 正是我所需要的!
猜你喜欢
  • 2023-03-12
  • 2018-09-09
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多