Frage

habe ich eine benutzerdefinierte ButtonUI Klasse, dass Farben die Taste. Vor dem Text zeichnet, hat die Farbe Methode überprüft, ob die Taste, die eingestellt wurde eine eigene Farbe zu verwenden, um statt UIDefaults # get ( „Button.foreground“).

if ((b.getForeground() != null)) {
    colText = b.getForeground();
}

einen Blick in die java.awt.Component Klasse Nachdem ergibt sich ein Problem:

public Color getForeground() {
    Color foreground = this.foreground;
    if (foreground != null) {
        return foreground;
    }
    Container parent = this.parent;
    return (parent != null) ? parent.getForeground() : null;
}

auf die Schaltfläche der getForeground So Überprüfung () gegen null nicht hilft so viel wie es die Vordergrundfarbe für die Komponente kehrt die Taste auf platziert wird.

Die Frage ist: Wie kann ich überprüfen, ob die Schaltfläche explizit eine benutzerdefinierte Vordergrundfarbe festgelegt wurde

Setzen eines PropertyChangedListener auf die Schaltfläche könnte eine Lösung sein, aber ich denke, irgendwie muss es einen einfacheren Weg.

War es hilfreich?

Lösung

in der Component können Sie die isBackgroundSet() Methode finden.

Andere Tipps

Überschreiben Sie die Methode und haben es zurückgeben this.foreground; oder eine neue Methode hinzufügen, dass kehrt das.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top