Bonjour,
Je cherche à modifier les caractéristiques (caractères, taille, couleur) du String associé à la balise title d'une JFrame.
D'avance merci
Version imprimable
Bonjour,
Je cherche à modifier les caractéristiques (caractères, taille, couleur) du String associé à la balise title d'une JFrame.
D'avance merci
Salut,
- Option 1 - La propre mais longue et fastidieuse
Les couleurs et styles des titres de JFrame (et tout le reste, bouton, bordures, etc) sont gérés par ce qu'on appelle le Look and Feel. Pour pouvoir faire ce que tu veux il te faudra faire un look and feel complet, ou éventuellement étendre un existant si c'est possible. Par défaut, le Look And Feel est spécifique à l'OS, donc ça complique un peu les choses pour faire ça de manière à ce que ça fonctionne partout (Windows, Mac, Linux, etc). D'autant plus que les classes de Look And Feel "système" ne sont pas dans les packages standards.
Certains look and feel supporte une notion de thèmes qui facilitera la colorisation. Si tu ne tiens pas à avoir un look and feel système, ça peut être une solution plus simple.- Option 2 - La bidouille, simple, limitée (tu ne pourras pas tout paramétrer), résultat laid (comme tu pourras le voir avec l'exemple suivant)
Désactiver le look and feel et utiliser les propriétés d'UI.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public static void main(String[] args) { LookAndFeel lnf = UIManager.getLookAndFeel(); System.out.println(lnf); UIDefaults uiDefaults = UIManager.getDefaults(); uiDefaults.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.RED)); // titre en rouge uiDefaults.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.GREEN)); // fond du titre en vert JFrame.setDefaultLookAndFeelDecorated(true); // désactiver le look and feel JFrame frame = new JFrame(); frame.setTitle("Titre"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.setLocationRelativeTo(null); frame.setVisible(true); }
- Option 3 - Tout refaire soi-même, galère et il faut bien connaître Swing pour que la fenêtre fonctionne correctement (qu'on puisse la déplacer par drag and drop de la barre de titre, gérer les boutons, les menus, etc)
Pour ça il faut passer en mode "non décoré". Appeler setUndecorated(true) sur l'instance de frame avant de l'afficher (donc avant le setVisible(true)). Tout refaire soi-même signifie ajouter des composants pour le titre, le bouton, des bordures, etc (ou tout dessiner dans le fond de la fenêtre) et gérer les différentes actions. Tu pourras avoir le graphisme que tu souhaites, y compris avoir une fenêtre non rectangulaire.
Merci