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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top