Как добавить дополнение к 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)
.