No swing, existe uma propriedade para definir uma cor de primeiro plano para desativar o JLIST?

StackOverflow https://stackoverflow.com/questions/2276691

  •  21-09-2019
  •  | 
  •  

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.

Foi útil?

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:

  1. Você pode definir o "Label.disabledText" propriedade no UIManager, que fará tudo JLabel instâncias e subclasses que estão desativados para assumir essa coloração.
  2. Você pode criar um renderizador personalizado para o seu JList que testa o estado ativado do JList 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.

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