Domanda

Ho una classe ButtonUI personalizzata che dipinge il pulsante. Prima di disegnare il testo, il metodo di vernice controlla se il tasto è stato impostato un colore personalizzato, al fine di utilizzare che invece di UIDefaults # get ( "Button.foreground").

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

Avere uno sguardo nella classe java.awt.Component produce un problema:

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

Quindi, controllando getForeground del pulsante () contro il nulla non aiuta più di tanto in quanto restituirà il colore di primo piano per il componente il pulsante viene posizionato su.

La domanda è: come faccio a verificare se il pulsante è stato impostato in modo esplicito un colore di primo piano personalizzato

Mettere un PropertyChangedListener sul pulsante potrebbe essere una soluzione, ma io in qualche modo pensare che ci deve essere un modo più semplice.

È stato utile?

Soluzione

nel Component è possibile trovare il metodo isBackgroundSet().

Altri suggerimenti

l'override del metodo e lo hanno tornare this.foreground; o di aggiungere un nuovo metodo che restituisce questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top