Obtenir une couleur de premier plan pour définir explicitement un JButton
-
24-09-2019 - |
Question
J'ai une classe ButtonUI personnalisée qui peint le bouton. Avant de dessiner le texte, la méthode vérifie la peinture si le bouton a été mis en une couleur personnalisée afin d'utiliser à la place de UIDefaults # get ( « Button.foreground »).
if ((b.getForeground() != null)) {
colText = b.getForeground();
}
Avoir un coup d'oeil dans la classe java.awt.Component donne un problème:
public Color getForeground() {
Color foreground = this.foreground;
if (foreground != null) {
return foreground;
}
Container parent = this.parent;
return (parent != null) ? parent.getForeground() : null;
}
Alors vérifier getForeground () du bouton contre nul ne contribue pas tant que ça car il retournera la couleur de premier plan pour le composant le bouton est placé sur.
La question est: Comment puis-je vérifier si le bouton a été explicitement définir une couleur de premier plan personnalisé
?Mettre un PropertyChangedListener sur le bouton peut être une solution, mais je pense que d'une certaine manière il doit y avoir un moyen plus simple.
La solution
dans le Component
vous pouvez trouver la méthode isBackgroundSet()
.
Autres conseils
Remplacer la méthode et le faire revenir this.foreground; ou ajouter une nouvelle méthode qui retourne que.