Imbottitura JPanel in Java


107

Ho una domanda di formattazione per la mia applicazione Java swing. Dovrebbe essere abbastanza semplice, ma ho difficoltà a trovare alcun aiuto (ogni argomento sembra riguardare la rimozione di qualsiasi riempimento predefinito in JPanel). Il testo nei miei vari JPanel abbraccia i lati e la parte superiore, toccando i bordi colorati: come posso aggiungere imbottitura? Grazie.

Risposte:


234

Imposta un EmptyBorderintorno al tuo JPanel.
Esempio:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));

45
oppure puoi avere qualche imbottitura extra intorno al confine esistente:p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
Synox

Cosa succede quando la finestra viene ridimensionata? Questa soluzione non è buona, vero?
Andrew S

@Synox Legend davvero! Nota che puoi mettere EmptyBorder come ultimo parametro per il riempimento interno
Hunter S

3

Quando hai bisogno di imbottitura all'interno del JPanelgenerale, aggiungi imbottitura con il gestore di layout che stai utilizzando. Ci sono casi in cui puoi semplicemente espandere il bordo del file JPanel.


1
L'aggiunta di imbottitura al gestore layout (nel mio caso, GridLayout) aggiunge imbottitura tra i pannelli adiacenti, ma non all'interno di un singolo pannello. Ma un confine andrà bene, grazie per l'aiuto.
Connor

3

Suppongo che il tuo JPanel contenga JTextField, per il bene della demo.

Questi componenti forniscono un JTextComponent#setMargin()metodo che sembra essere quello che stai cercando.

Se stai cercando un bordo vuoto di qualsiasi dimensione attorno al tuo testo, beh, usa EmptyBorder


0
JPanel p=new JPanel();  
GridBagLayout layout=new GridBagLayout(); 
p.setLayout(layout); 
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL; 
gbc.gridx=0;   
gbc.gridy=0;   
p2.add("",gbc);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.