Look and feel d'un onglet sur une JTabbedPane
Bonjour.
Je travaille avec un JTabbedPane.
Je souhaiterais savoir comment on peut définir le look and feel de l'onglet qui est sélectionné.
J'ai pu faire en sorte d'obtenir ce que je veux sur les onglets qui ne sont pas sélectionnés: J'y ai mis des JLablel avec les couleurs et la police que je souhaite.
Mais l'onglet sélectionné prends une couleur grisée que je ne veux pas, et je ne sais pas comment changer ça.:roll:
Toute aide sera la bienvenue.
Merci.
Tout changer sur un look and feel
Bonjour, pour avoir fait des thèmes je peux t'aider.
Premièrement laisse tomber les JLabel ça fait moche ça modifie pas le fond de l'onglet. Si tu veux vraiment les utiliser à part "setOpaque(true)", tu pourras rien faire d'autre. Passe à des look and feel totalement customisables, comme Synth, Nimbus ou FlatLaf par exemple. Lien pour modifier Nimbus ici. Tu peux aussi utiliser JavaFX.
Personnellement, j'ai totalement migré de Nimbus à FlatLaf car mis à jour et package maven, ils ont un éditeur gratuit et on peut utiliser FlatLaf gratuitement (quand même bien lire les licences avant toutes intégrations, merci) et on peut aussi le faire pas gratuitement... Si tu veux du pure CSS passe par JavaFX en adoptant la logique (penser l'entière application en JavaFX).
Par exemple, pour Nimbus, on peut modifier les Tab avec un Painter.
J'avais fait ça pour l'expliquer bien comme il faut avec une JProgressBar, l'utilisation d'un Painter étant identique tu peux t'inspirer de ce code pour Nimbus.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public static class MyPainter implements Painter {
@Override
public void paint(Graphics2D g, Object object, int width, int height) {
if (object instanceof javax.swing.JProgressBar){
Color blueColor = new Color(84, 118, 255);
Color blueColorWithAlpha = new Color(84, 118, 255, 127);
GradientPaint GRADIENT_1 = new GradientPaint(0, 0, blueColorWithAlpha, 0, height/2, blueColor);
g.setPaint(GRADIENT_1);
g.fillRect(0, 0, width, height/2);
GradientPaint GRADIENT_2 = new GradientPaint(0, height/2, blueColor, 0, height, blueColorWithAlpha);
g.setPaint(GRADIENT_2);
g.fillRect(0, height/2, width, height);
}
}
} |
Et pour appliquer le Painter :
Code:
1 2 3 4
| UIManager.put("ProgressBar[Enabled+Finished].foregroundPainter", new MyPainter());
UIManager.put("ProgressBar[Enabled+Indeterminate].foregroundPainter", new MyPainter());
UIManager.put("ProgressBar[Enabled].foregroundPainter", new MyPainter());
SwingUtilities.updateComponentTreeUI(this); |
Voilà ce que je pouvais te dire. Si tu as des questions, je peux tenter d'y répondre.