Utiliser BorderFactory pour créer des bordures

Pour ajouter une bordure à un composant ou un conteneur, vous pouvez utiliser la classe java BorderFactory qui fournit de nombreuses types de bordures Swing. Les trois étapes de la création d'une bordure sont:
  • Créer une bordure en instanciant la classe Border.
  • Choisir le style de la bordure avec la méthode BorderFactory.create...().
  • Modifier le JComponent (composant) avec la méthode setBorder.

LineBorder

Cette méthode BorderFactory.createLineBorder(Color, int) crée une simple bordure. Le premier paramètre représente la couleur et le deuxième, la largeur du trait.

Le code suivant crée une Border dans JLabel et JPanel.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;

public class BorderFactoryExemple extends JPanel{

public BorderFactoryExemple(){

JFrame f = new JFrame("BorderFactoryExemple");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);

JPanel panel = new JPanel();
JLabel label = new JLabel(" lineBorder");
label.setPreferredSize(new Dimension(100, 100));
panel.add(label);
panel.setPreferredSize(new Dimension(200,125));
//créer une bordure de trait noir et largeur minimale 1
Border lineborder = BorderFactory.createLineBorder(Color.black, 1);
//associer à JLabel
label.setBorder(lineborder);

f.getContentPane().setLayout(new BorderLayout());
f.add(new JLabel(" "), BorderLayout.NORTH);
//adjuster au centre
f.add(panel, BorderLayout.CENTER);
f.pack();

}
public static void main(String[] args) {
new BorderFactoryExemple();
}
}
Sortie
BorderFactory example lineBorder

EtchedBorder

Etched signifie gravé en français, soit de l’extérieur: EtchedBorder.RAISED, soit de l'intérieur: EtchedBorder.LOWERED.

RAISED

Border EtchedBorderRaised = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
borderfactory raised

LOWERED

Border EtchedBorderLowered = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
borderfactory lowered

RaisedBevelBorder

Crée une bordure sous forme d'un bouton relâché avec des nuances lumineuses et plus sombre pour les ombres.

Border RaisedBevelBorder = BorderFactory.createRaisedBevelBorder();
borderfactory raised bevel border

LoweredBevelBorder

Crée une bordure sous forme d'un bouton appuyé avec des nuances lumineuses et plus sombre pour les ombres.

Border LoweredBevelBorder = BorderFactory.createLoweredBevelBorder();
borderfactory lowered bevel border

MatteBorder

Crée une bordure avec 5 paramètres, les 4 premiers traitent la largeur du trait gauche, droit, haut et bas, et le dernier pour colorer les bords.

Border matteborder = BorderFactory.createMatteBorder(1, 1, 3, 1, Color.blue);
borderfactory matteborder

On peut aussi rendre plus jolie en ajoutant un icone qui se redéssine autour de la bordure:

ImageIcon icone = new ImageIcon("etoile.png");
Border matteborder = BorderFactory.createMatteBorder(1, 1, 3, 1, icone);
borderfactory matteborder icone

TitledBorder

TitledBorder a cinq constructeurs, on a choisi de faire un exemple avec celui qui englobe tous les paramètres qui permettent d'ajouter un titre a une bordure avec un style de bordure précis, position, font et couleur.

Border LoweredBevelBorder = BorderFactory.createLoweredBevelBorder();
Border EtchedBorderRaised = BorderFactory.createTitledBorder(LoweredBevelBorder, "titre",
TitledBorder.LEFT,TitledBorder.TOP, 
new Font("Arial", Font.PLAIN , 13), Color.black);
borderfactory titledborder

EtchedBorder

Ce style regroupe deux styles en un seul. Par exemple, on veut dessiner une LineBorder à l'intérieur de RaisedBevelBorder:

Border lineborder = BorderFactory.createLoweredBevelBorder();
Border RaisedBevelBorder = BorderFactory.createLineBorder(Color.blue);
Border EtchedBorderRaised = BorderFactory.createCompoundBorder(lineborder,
RaisedBevelBorder);
BorderFactory EtchedBorder

Références
Oracle Documentation: BorderFactory
java2s: create Use BorderFactory