2013-07-29 12 views
11

Voglio aggiungere padding ad alcuni JPanel s. Ho trovato questa risposta: https://stackoverflow.com/a/5328475/1590323Come aggiungere padding a un JPanel con un bordo

Ha funzionato bene per un pannello senza un bordo. Ma come lo faccio per un pannello che ha già un confine? (A TitledBorder in questo caso)

ho provato:

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

(In breve: Aggiunta di un EmptyBorder al pannello che dovrebbe avere un TitledBorder, poi fare un altro pannello con il TitledBorder e aggiungere il primo pannello di che, e quindi utilizzare tale pannello)

Ma poi ho avuto modo troppo grande riempimento che ha ignorato i valori contructor del EmptyBorder.

Quindi come aggiungere padding a un JPanel con un bordo grafico?

+0

+1, per il duro lavoro che hai fatto prima di postare la domanda :-) però, come affermato in precedenza questo arriverà tra qualche tempo –

+0

@nIcEcOw Grazie :-) –

risposta

23

Puoi dare un'occhiata a CompoundBorder.

Una classe Border composito utilizzato per comporre due Border oggetti in un singolo bordo annidando un oggetto Border all'interno all'interno incastri di un oggetto bordo esterno. Ad esempio, questa classe può essere utilizzato per aggiungere spazio di margine in bianco ad un componente con un bordo decorativo esistente:

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

Naturalmente, è anche possibile utilizzare BorderFactory#createCompoundBorder(border, margin).

+2

Grazie, 'CompoundBorder' era proprio quello di cui avevo bisogno! –

+0

Siete i benvenuti :) (+1 per la vostra domanda, lo stesso motivo dichiarato da nIcE cOw) – NiziL

+0

Non funziona per me. Non sai perché? – Paul