Colore Progressbar

di il
7 risposte

Colore Progressbar

Salve, ho la necessità di cambiare il colore del progressbar (swing), ma non riesco in alcun modo.
Ho cercato in rete ho seguito diversi consigli ma nulla da fare .

Per prima cosa devo dire (utilizzo NetBeans) che sviluppo per via grafica con l'editor grafico, poi faccio un poco di codice con gli eventi. Ho una classe jinternalframeform, riesco a fare tutto quello che mi serve, l'unica cosa è il colore del progress bar.

Questo ha un bellissimo aspetto ed è verde. Se provo a cambiare colore con l'editor grafico non cambia niente.
Poi ho provato all'attivazione della finestra con
oggetto_pbar.setForeground(Color.YELLOW);
ma nulla da fare.

Successivamente ho trovato questi consigli
UIManager.put("ProgressBar.foreground", Color.YELLOW);
anche in questo caso niente.

Infine ho provato ad inserire il codice sopra negli eventi di pre-creazione o pre-inserimento dell'oggetto ma nulla è cambiato

Non è una cosa importante, solo una mia voglia di avere qualche colore diverso pertanto inizialmente vi ho rinunciato. Mi domando se qualcuno qui sicuramente più esperto di me sa darmi una dritta?

Grazie.

7 Risposte

  • Re: Colore Progressbar

    elsabz ha scritto:


    Salve, ho la necessità di cambiare il colore del progressbar (swing), ma non riesco in alcun modo.
    Ho cercato in rete ho seguito diversi consigli ma nulla da fare .

    Per prima cosa devo dire (utilizzo NetBeans)
    Non hai precisato quale Look&Feel usa la tua applicazione. Però hai parlato di NetBeans, che è solito impostare un L&F in maniera esplicita (genera del codice nel main() ). E se non ricordo male imposta il "Nimbus" che è un L&F molto moderno e "cool" ma ... che purtroppo è meno facilmente personalizzabile.

    Quindi innanzitutto prova a lasciare il L&F predefinito.


    Nota che le impostazioni fatte con UIManager.put sono globali del L&F e hanno effetto solo sui componenti creati successivamente.
  • Re: Colore Progressbar

    Grazie per la risposta Andrea
    Si come dici dentro main c'è questo:
    
    /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
             */
            
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(FrmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(FrmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(FrmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(FrmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
    Se sostituisco "Nimbus" con "Synth" l'aspetto cambia radicalmente, il colore del progress bar corrisponde a quanto impostato nelle proprietà dell'editor grafico, Purtroppo però l'aspetto è bruttissimo se devo scegliere preferisco decisamente tornare a Nimbus lasciando il colore verde del progress bar. Con "Synth" il colore del progress bar che prima era un bel verde diventa turchese pallido, mentre il colore impostato nelle proprietà (GIALLO) è uniforme, un bel giallo.

    Ho provato a cercare come fare per modificare il colore del progress bar con Nimbus, sembra molto complicato... ma non è chiaro come si fa
    Nota che le impostazioni fatte con UIManager.put sono globali del L&F e hanno effetto solo sui componenti creati successivamente.
    Questo l'avevo intuito, per questo avevo provato ad inserire il codice nelle sezioni pre-creazione o pre-inserimento
    UIManager.put("oggetto_pbar.foreground", Color.YELLOW);

    Ma purtroppo non cambia nulla
    Mannaggia hai qualche ulteriore consiglio?
  • Re: Colore Progressbar

    elsabz ha scritto:


    Se sostituisco "Nimbus" con "Synth" l'aspetto cambia radicalmente, il colore del progress bar corrisponde a quanto impostato nelle proprietà dell'editor grafico, Purtroppo però l'aspetto è bruttissimo
    Il Synth è il Look&Feel che fornisce una architettura generale per creare L&F custom (di fatto il Nimbus è una customizzazione del Synth). Non puoi banalmente mettere il Synth, perché è solo una "base" per altri L&F.

    Semplicemente, adesso per prova, "commenta" la riga di set:

    javax.swing.UIManager.setLookAndFeel(info.getClassName());

    (oppure tutto il blocco del setup L&F). E vedrai il L&F predefinito (che si chiama Metal), meno "cool" del Nimbus chiaramente.
    Con quello, i set che avevi fatto dovrebbero funzionare.
  • Re: Colore Progressbar

    Se tolgo il blocco setup L&F compare il L&F come Synth, uguale, no Metal.
  • Re: Colore Progressbar

    elsabz ha scritto:


    Se tolgo il blocco setup L&F compare il L&F come Synth, uguale, no Metal.
    Se prima, per dire, avevi cercato:

    if ("Synth".equals(info.getName()))

    sappi che NON ha alcun effetto. Il Synth non è un L&F "esposto" direttamente, ripeto che è una architettura/scheletro generale per altri L&F.
    Quindi quello che hai appena visto, è già il predefinito (Metal). Non è "brutto" .... solo meno cool del Nimbus.
  • Re: Colore Progressbar

    Ah ok ho capito, grazie!
    Ma scusa se insisto, modificare Nimbus non è percorribile ?
  • Re: Colore Progressbar

    elsabz ha scritto:


    Ma scusa se insisto, modificare Nimbus non è percorribile ?
    Sì si può naturalmente. C'è la documentazione ufficiale: Nimbus Defaults che elenca tutte le chiavi per UIManager.
Devi accedere o registrarti per scrivere nel forum
7 risposte