L'apparence d'un composant est déterminée par sa méthode paintComponent. Si on souhaite modifier cette apparence, on peut soit agir indirectement (par exemple modifier sa couleur de fond avec setBackground), soit agir directement en redéfinissant paintComponent :
import javax.swing.JComponent; import java.awt.Graphics; public class Bonjour extends JComponent { @Override protected void paintComponent(Graphics pinceau) { // obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard Graphics secondPinceau = pinceau.create(); // obligatoire : si le composant n'est pas censé être transparent if (this.isOpaque()) { // obligatoire : on repeint toute la surface avec la couleur de fond secondPinceau.setColor(this.getBackground()); secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); } // maintenant on dessine ce que l'on veut secondPinceau.setColor(this.getForeground()); secondPinceau.drawString("Bonjour !", 10, 20); } }
Dans ce cas, le composant est rempli avec sa couleur de fond, puis on peut ajouter des éléments à l'aide du pinceau (un objet de la classe Graphics).
On trouve dans cette classe toutes les méthodes élémentaires pour le dessin :
Le pinceau peut également être configuré, notamment en ce qui concerne la couleur de dessin (setColor) et la police de caractères (setFont). Comme il est fortement recommandé de ne pas modifier le pinceau d'origine, il vaut mieux travailler avec une copie du pinceau (create).
Il est possible d'utiliser des images au format .jpeg
, .gif
ou
.png
, si on a pensé à les charger au préalable :
import javax.swing.JComponent; import java.awt.*; public class Bonjour extends JComponent { private Image pingouin; public Bonjour() { super(); this.pingouin = Toolkit.getDefaultToolkit().getImage("walk-0.png"); } @Override protected void paintComponent(Graphics pinceau) { Graphics secondPinceau = pinceau.create(); if (this.isOpaque()) { secondPinceau.setColor(this.getBackground()); secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); } secondPinceau.drawImage(this.pingouin, 10, 20, this); } }
Remarque Toutes les méthodes de dessin, images comprises, tiennent compte de la transparence.
Formes. Écrivez une application qui ouvre une fenêtre contenant :
Sautoir. Écrivez une application qui ouvre une fenêtre ayant cette apparence :
Remarque Il est conseillé de concevoir un composant qui dessine un «sablier» et de le dupliquer 25 fois.
Accueil. Une interface graphique est souvent améliorée par le travail d'un graphiste. Cette image vous donne la base d'un écran d'authentification. Concevez une application qui ouvre une fenêtre ayant l'apparence imposée et dans laquelle on peut entrer ses identifiants.
Remarque Dans ce genre de situation, un gestionnaire de mise en page n'est pas utile.
Cercles. Écrivez une application qui ouvre une fenêtre ayant cette apparence :