# Programmation Java Swing/Apparence de l'interface

* Introduction
* Composants
** Arbre
* Fenêtres
* Menus
* Actions
* Types de données et constantes
* Gestion de la disposition des composants
* Gestion des évènements
* Gestion des actions asynchrones
* Apparence de l'interface
* Contenu en HTML
* Créer un composant
** Une case à cocher à trois états
** Dessin d'un composant
** Dessin d'une étoile
** Dessin de texte et effets
* Créer une image
* Introduction
* Composants
** Arbre
* Fenêtres
* Menus
* Actions
* Types de données et constantes
* Gestion de la disposition des composants
* Gestion des évènements
* Gestion des actions asynchrones
* Apparence de l'interface
* Contenu en HTML
* Créer un composant
** Une case à cocher à trois états
** Dessin d'un composant
** Dessin d'une étoile
** Dessin de texte et effets
* Créer une image
[ Modifier le sommaire ]
L'apparence et le comportement (look and feel en anglais) des composants Swing d'une application sont modifiables et configurables par le gestionnaire d'apparence et de comportement. L'apparence et le comportement varient plus largement pour les boîtes de dialogue standards telle celle de l'ouverture de fichiers où les composants utilisés diffèrent :

## Apparence de l'application

Les composants Swing ont une apparence et un comportement (look and feel en anglais) modifiables définis par le gestionnaire d'apparence et de comportement. L'apparence peut ensuite être modifiée pour chaque composant en appelant les méthodes communes :
* setBackground(Color) : Changer la couleur de fond.
* setForeground(Color) : Changer la couleur de premier plan (texte, ligne en général).
* setFont(Font) : Changer la police de caractères, si le composant affiche du texte.
* setBorder(Border) : Changer la bordure autour du composant (aucune par défaut en général).
Les méthodes get correspondantes existent également permettant d'obtenir la valeur courante.
Le gestionnaire d'apparence et de comportement par défaut est Metal, disponible quel que soit la plateforme. La classe UIManager permet de changer l'apparence et le comportement en appelant la méthode setLookAndFeel et en lui passant le nom de la classe implémentant l'apparence et le comportement voulus.
Si l'application effectue un changement, il faut le faire avant la création des fenêtres concernées. Par exemple dans la méthode main :
Si l'application effectue le changement après création des fenêtres, la mise à jour doit se faire explicitement en appelant la méthode statique SwingUtilities.updateComponentTreeUI pour chaque fenêtre à mettre à jour en argument.

## Aperçu

Les copies d'écran ci-dessous montrent l'apparence de divers composants Swing selon l'apparence sélectionnée. Les apparences disponibles dépendent du système d'exploitation sous lequel tourne l'application Java. L'apparence peut modifier les couleurs, la police de caractère par défaut, la taille, les marges des différents composants. Par contre, l'apparence du bord de la fenêtre ne change pas.
Sous windows 7 :
* Metal
* Nimbus
* CDE/Motif
* Windows
* Windows Classic
L'aspect de tous les composants changent, mais celui du bord de la fenêtre ne change pas par défaut. Le changement de l'aspect du bord de fenêtre n'est pas supporté par toutes les apparences. La seule apparence à le supporter est le look&feel Metal. Pour activer le changement d'apparence de décoration des fenêtres et boîtes de dialogue, il faut appeler ces méthodes (les deux en général) :
Ces deux méthodes doivent être appelées avant la création des fenêtres et boîtes de dialogue. On peut obtenir le même effet sur une fenêtre individuelle :
Pour une boîte de dialogue :
La personnalisation de l'apparence des bords de fenêtres est effectivement géré par JRootPane, dans une fenêtre sans décoration. Si le changement d'apparence de décoration des fenêtres et boîtes de dialogue est activé avec une apparence qui ne le supporte pas, la fenêtre n'a plus de bord.
L'apparence peut être configurée avant la création de fenêtre.
Par exemple, il est possible de désactiver les polices en gras de l'apparence Metal :

## Code source

Le code source ci-dessous est celui de l'application ayant permis les captures d'écrans de ce chapitre.