Conseguir un color de primer plano establecido explícitamente para un JButton
-
24-09-2019 - |
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.
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.