Как добавить дополнение к JPanel с рамкой

Я хочу добавить дополнение к некоторым JPanel s. Я нашел этот ответ: qaru.site/info/66078/...

Он отлично работал для панели без рамки. Но как это сделать для панели, которая уже имеет границу? (A 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

Вы можете посмотреть CompoundBorder.

Составной класс 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).