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

标签 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 添加填充?

最佳答案

可以看看CompoundBorder .

A composite Border class used to compose two Border objects into a single border by nesting an inside Border object within the insets of an outside Border object. For example, this class may be used to add blank margin space to a component with an existing decorative border:

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

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

关于java - 如何向带边框的 JPanel 添加填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17925609/

相关文章:

java - 在 borderlayout 中使用 JPanel 错误打包 JFrame

java - Swing:如何创建不使用布局的可滚动 JPanel 列表

java - PageFormat 变量中的 nullpointerException

java - 为什么它在字符串中返回错误的重复次数?

java - 查看字符串是否包含所有数字的方法

java - 将 JTextPane 添加到 BorderLayout.SOUTH 会导致 JScrollPane 滚动

java - AWTUtilities setWindowOpaque 导致问题

Java-Scanner 不适用于 nextByte()

java - 为什么 Firebase 数据库上的循环会一次又一次地添加数据?

java - 试图在点击时更改按钮名称