2013-07-29 3 views
11

Я хочу добавить отступы к некоторым JPanel s. Я нашел этот ответ: https://stackoverflow.com/a/5328475/1590323Как добавить отступ к JPanel с рамкой

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

So Как добавить прокладку в JPanel с графической рамкой?

+0

+1, к тяжелой работе, которую вы сделали до публикации вопроса :-) хотя, как было сказано ранее, это произойдет через некоторое время –

+0

@nIcEcOw Спасибо :-) –

ответ

23

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

Составного класс Пограничного используется, чтобы составить два пограничные объекты в одной границы путем вложения изнутри объекта границы в пределах вставок внешний объект Пограничного. Например, этот класс может быть использован для добавления пустого пространства маржи к компоненте с существующей декоративной каймой:

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

Конечно, вы можете также использовать BorderFactory#createCompoundBorder(border, margin).

+2

Спасибо, 'CompoundBorder' был именно тем, что мне нужно! –

+0

Добро пожаловать :) (+1 для вашего вопроса, по той же причине сказано nIcE cOw) – NiziL

+0

Не работает для меня. Не знаете почему? – Paul

Смежные вопросы