Pregunta

Tengo una clase personalizada que ButtonUI pinturas el botón. Antes de dibujar el texto, el método comprueba si el botón de pintura se ha establecido un color personalizado con el fin de utilizar que en lugar de UIDefaults # get ( "Button.foreground").

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

Tener una mirada en la clase 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;
}

Así que la comprobación del botón getForeground () contra nula no ayuda mucho, ya que devolverá el color de primer plano para el componente en el botón se coloca en.

La pregunta es: ¿Cómo puedo comprobar si el botón de forma explícita se ha establecido un color de primer plano a medida

Poner una PropertyChangedListener en el botón podría ser una solución, pero de alguna manera creo que debe haber una manera más sencilla.

¿Fue útil?

Solución

en el Component se puede encontrar el método isBackgroundSet().

Otros consejos

Reemplazar el método y tienen que volver this.foreground; o añadir un nuevo método que devuelve eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top