In altalena, c'è una proprietà per impostare un colore di primo piano disabile JList?

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

  •  21-09-2019
  •  | 
  •  

Domanda

In altalena, c'è una proprietà per impostare un colore di primo piano disabile JList?

sto usando il costruttore di Netbeans GUI e voglio aggiungere un alloggio ai file di proprietà delle risorse che imposta il colore del testo in un JList ad un predefinito diverso quando il JList è disattivato. Utilizzando la Nimbus LAF, c'è un colore diverso per questo, perché il testo è grigio quando è disabilitato, ma il nero quando è abilitata. Solo che non voglio che sia grigia quando disattivato.

Il colore di primo piano standard è solo .foreground.

Grazie.

È stato utile?

Soluzione

Il DefaultListCellRenderer estende JLabel. Nel suo metodo getListRendererComponent, imposta lo stato abilitato basato su quello del JList che viene passato.

Il codice per la pittura disabile testo JLabel in BasicLabelUI fa un certo lavoro di dipingere il testo con un effetto ombra. In molte sottoclassi, troverete il codice che cerca la proprietà "Label.disabledForeground" UI. Le impostazioni predefinite Nimbus sembrano cercare "Label.disabledText".

Hai un paio di opzioni:

  1. È possibile impostare la proprietà "Label.disabledText" nel UIManager, che renderà tutte le istanze JLabel e sottoclassi che sono disabilitati ad assumere questa colorazione.
  2. È possibile creare un renderer personalizzato per il tuo JList che mette alla prova lo stato abilitato del JList e poi fa tutto il codice personalizzato che si desidera - o omettere il test stato di attivazione del tutto, se si desidera guardare lo stesso a prescindere dalla sua abilitati stato.

Vorrei suggerire che si prende l'approccio renderer personalizzato, in quanto è difficile dire dove il cambiamento di una proprietà JLabel rivelerà, come quella classe viene utilizzato come un blocco builing in molti componenti diversi.

Altri suggerimenti

Se c'è una proprietà per impostare poi le impostazioni predefinite UIManager programma dovrebbe mostrare la proprietà di cambiare. Non vedo una proprietà per il metallo o Windows LAF quindi potrebbe indicare questo è controllato direttamente nel codice utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top