JPanel Padding en Java

107

J'ai une question de mise en forme pour mon application Java Swing. Cela devrait être assez simple, mais j'ai du mal à trouver de l'aide (chaque sujet semble concerner la suppression de tout remplissage par défaut dans JPanel). Le texte de mes divers JPanel épouse les côtés et le dessus, touchant les bordures colorées: comment puis-je ajouter un rembourrage? Je vous remercie.

Connor
la source

Réponses:

234

Définissez un EmptyBorderautour de votre JPanel.
Exemple:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));
Julien Vermillard
la source
45
ou vous pouvez avoir un rembourrage supplémentaire autour de la frontière existante:p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
Synox
Que se passe-t-il lorsque la fenêtre est redimensionnée? Cette solution n'est pas bonne alors n'est-ce pas?
Andrew S
@Synox Legend en effet! Notez que vous pouvez mettre EmptyBorder comme dernier paramètre pour le remplissage interne
Hunter S
3

Lorsque vous avez besoin d'un remplissage à l'intérieur du JPanelgénéralement, vous ajoutez un remplissage avec le gestionnaire de disposition que vous utilisez. Dans certains cas, vous pouvez simplement étendre la bordure du fichier JPanel.

jzd
la source
1
L'ajout de remplissage au gestionnaire de disposition (dans mon cas, GridLayout) ajoute un remplissage entre les panneaux adjacents, mais pas dans un panneau individuel. Mais une frontière fera l'affaire, merci pour l'aide.
Connor
3

Je suppose que votre JPanel contient JTextField, pour le plaisir de la démo.

Ces composants fournissent une JTextComponent#setMargin()méthode qui semble être ce que vous recherchez.

Si vous recherchez une bordure vide de n'importe quelle taille autour de votre texte, utilisez EmptyBorder

Riduidel
la source
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);
Demetrio
la source