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.

Réponses:


234

Définissez un EmptyBorderautour de votre JPanel.
Exemple:

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

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.


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


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);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.