Cambiare il colore del frame in applicazioni Java con look’n’feel Nimbus

In pratica mi sono trovato a dover fare uno splashscreen in un’applicazione che sto scrivendo in Java, per la quale utilizzo lo splendido look and feel Nimbus. In questo splashscreen devo visualizzare un’immagine (che è a fondo nero), lasciando sotto un pò di spazio in cui c’è una label la quale comunica all’utente cosa sta accadendo. Ora… il mio intento era quello di rendere il background del frame di colore nero (al posto del default grigio chiaro), in modo da non “stonare” con l’immagine.

Chi, come me, avrà provato a cambiare il colore del JFrame in fase di design, si sarà accorto che tale impostazione viene completamente sovrascritta dal colore di default del look’n’feel.

Come fare allora? La soluzione è molto semplice (ammetto di aver googlato un pò):

UIManager.put("control", java.awt.Color.BLACK);

questa riga sovrascrive semplicemente il color value associato alla key “control”, la quale indica il background color dei controlli (frames inclusi). (La table completa dei colori del look’n’feel Nimbus la trovate qui).

Con il codice qui di seguito, setto il colore di background giusto il tempo di visualizzare lo splashscreen, e ripristino quello di default alla sua uscita, in modo da riavere il look standard per il resto dell’applicazione:

// Salvo il colore di default per la proprietà "control"
Object defaultControlColor = UIManager.get("control");
// Setto la proprietà "control" a BLACK
UIManager.put("control",java.awt.Color.BLACK);

// Mostro lo splashscreen
...
// Chiudo lo splashscreen
...

// Rimetto a posto il colore di default
UIManager.put("control", defaultControlColor);
Annunci

2 thoughts on “Cambiare il colore del frame in applicazioni Java con look’n’feel Nimbus

  1. Sei stato aggiunto ai segnalibri di Mozilla di un vecchio programmatore (meno bravo di te) che qui ha trovato un sacco di cose utili.

    Cordialissim saluti e grazie.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...