No swing, existe uma propriedade para definir uma cor de primeiro plano para desativar o JLIST?
Pergunta
No swing, existe uma propriedade para definir uma cor de primeiro plano para desativar o JLIST?
Estou usando o NetBeans GUI Builder e quero adicionar uma propriedade ao arquivo de propriedades do recurso que define a cor do texto em um JLIST para um padrão diferente quando o JLIST está desativado. Usando o Nimbus LAF, há uma cor diferente para isso porque o texto é cinza quando desativado, mas preto quando ativado. Eu só não quero que seja cinza quando desativado.
A cor do primeiro plano padrão é apenas. Antes do solo.
Obrigado.
Solução
o DefaultListCellRenderer
estende -se JLabel
. Em seu getListRendererComponent
método, ele define seu estado ativado com base no do JList
isso é passado.
O código para pintar desativado JLabel
texto em BasicLabelUI
Alguns trabalham para pintar o texto com um efeito de sombra. Em muitas subclasses, você encontrará código que procura o "Label.disabledForeground"
Propriedade da interface do usuário. O NIMBUS PADRES parece procurar "Label.disabledText"
.
Você tem algumas opções:
- Você pode definir o
"Label.disabledText"
propriedade noUIManager
, que fará tudoJLabel
instâncias e subclasses que estão desativados para assumir essa coloração. - Você pode criar um renderizador personalizado para o seu
JList
que testa o estado ativado doJList
E então faz qualquer código personalizado que você desejar - ou omitir o teste de estado ativado completamente, se você quiser que ele pareça o mesmo, independentemente do estado ativado.
Eu sugeriria que você adote a abordagem de renderizador personalizada, pois é difícil dizer onde a mudança de um JLabel
A propriedade será exibida, pois essa classe é usada como um bloco de duplas em muitos componentes diferentes.
Outras dicas
Se houver uma propriedade para definir, então o UIMANAGER Padrões O programa deve mostrar a propriedade para alterar. Não vejo uma propriedade para o metal ou o Windows LAF, por isso pode indicar que isso é controlado diretamente no código da interface do usuário.