2013-07-29 12 views
11

Chcę dodać dopełnienie do niektórych JPanel s. Znalazłem tę odpowiedź: https://stackoverflow.com/a/5328475/1590323Jak dodać dopełnienie do JPanel z ramką

To zadziałało dobrze dla panelu bez obramowania. Ale jak to zrobić dla panelu, który ma już granicę? (A TitledBorder w tym przypadku)

Próbowałem:

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); 

(W skrócie: Dodawanie EmptyBorder do panelu, który powinien mieć TitledBorder, a następnie dokonać innego panelu z TitledBorder i dodać pierwszy panel to, a następnie użyj tego panelu)

Ale potem dostałem o wiele za dużo wyściółki, która zignorowała wartości kontrahenta z EmptyBorder.

So Jak dodać dopełnienie do JPanel z graficzną ramką?

+0

+1, do ciężkiej pracy, którą wykonałeś przed wysłaniem pytania :-) chociaż, jak stwierdzono wcześniej, będzie to za jakiś czas –

+0

@ nIcEcOw Dzięki :-) –

Odpowiedz

23

Możesz spojrzeć na CompoundBorder.

Kompozyt klasy graniczne wykorzystywane, aby utworzyć dwa obramowania obiektów w jednym brzegu o zagnieżdżenie się wewnątrz przedmiotu granicznymi Wstawki w zewnętrzna obiektu granicznej. Na przykład, klasa ta może być używana do dodawania spację marginesu do komponentu z istniejącym dekoracyjne obramowania:

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

Oczywiście, można również użyć BorderFactory#createCompoundBorder(border, margin).

+2

Dzięki, 'CompoundBorder' było dokładnie tym, czego potrzebowałem! –

+0

Nie ma za co :) (+1 dla twojego pytania, ten sam powód powiedział NIcE cOw) – NiziL

+0

Nie działa dla mnie. Nie pewny dlaczego? – Paul

Powiązane problemy