Pergunta

Eu tenho uma aula de botão personalizada que pinta o botão. Antes de desenhar o texto, o método de pintura verifica se o botão foi definido uma cor personalizada para usá -lo em vez de uidefaults#get ("button.foreground").

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

Dando uma olhada na classe java.awt.componente produz um problema:

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

Portanto, verificar o botão getforeground () contra o null não ajuda muito, pois retornará a cor do primeiro plano para o componente em que o botão é colocado.

A pergunta é: como verifico se o botão foi explicitamente definido uma cor de primeiro plano personalizada?

Colocar um listener de imóveis no botão pode ser uma solução, mas de alguma forma acho que deve haver uma maneira mais simples.

Foi útil?

Solução

no Component você pode encontrar o isBackgroundSet() método.

Outras dicas

Substitua o método e faça com que ele retorne isso. ou adicione um novo método que retorne isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top