2010-08-13 7 views
7

Ho questi barre di avanzamento:Impostazione dei colori di un testo JProgressBar

Sample Bars

Sto cercando di impostare il colore del testo delle barre di avanzamento, senza cambiare il colore di sfondo o il colore della la barra di avanzamento stessa. Per quanto ne so, setForeground() imposta sia il testo che il colore della barra? C'è un modo per fare l'uno senza l'altro?

risposta

20

Ah ha - si presenta come posso modificare l'interfaccia utente:

setUI(new BasicProgressBarUI() { 
     protected Color getSelectionBackground() { return Color.black; } 
     protected Color getSelectionForeground() { return Color.white; } 
    }); 

Questo è stato un po 'di confusione, dal momento che l'uso del primo piano e sfondo non erano intuitiva. Lo sfondo è il colore del testo quando la barra non lo copre, mentre il primo piano è il colore del testo.

Ecco il risultato finale:

Colors adjusted

2

Per messaggio con UIDefaults,

ProgressBar.background is the background color 
ProgressBar.foreground is the cell color 
ProgressBar.selectionBackground is the text color outside cells 
ProgressBar.selectionForeground is the text colot INSIDE cells 

UIManager.put("ProgressBar.selectionForeground", Color.black); 
UIManager.put("ProgressBar.selectionBackground", Color.black);