Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema con JProgressBar

    salve ragazzi,

    ho bisogno di un aiuto.

    Ho una piccola applicazione costituita da un JFrame che contiene vari oggetti tipo JPanel, JButton, JToolBar ecc ecc.


    Vorrei inserire nella toolBar, un JProgressBar, in quanto ci sono alcuni metodi che possono impegnare un pò di tmpo l'applicazione è l'utente crede che il sistema si sia Bloccato.

    Ho fatto così:

    codice:
     public void miometodo(){
        
       progressBar = new JProgressBar(0,100);
    
    for(int i=0; i<100, i++){
       progressBar.setProgress(i)
    }
    
    }

    il problema è che vedo prima la progressbar vuota poi alla fine del ciclo completata.....

    dove sbalio

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    19
    Ciao,
    il problema è che usi lo stesso thread per gestire la grafica ed il metodo di lunga durata.
    Swing ha un suo thread predefinito per gestire gli eventi (compreso l'aggiornamento del progressbar).
    Lancia il metodo di lunga durata con un thread diverso, in modo che il thread di swing abbia intanto le risorse per gestire e tenere aggiornata la grafica.
    In rete e, penso anche nel forum, ci sono esempi a riguardo, però prima ti devi guardare un pò i concetti della concorrenza in java.
    Buon lavoro.

  3. #3
    Allora nel frattempo ho dato uno sguardo e dopo tanti forum ho trovato una roba del genere ma non so non mi funziona ancora.

    in pratica io faccio questo:

    codice:
    public void generaOrdine(){
    
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            
       for(int i=0; i< 1500; i++){
          progressBar.setValue(i);
    
    ....esegui operazioni
    }
    
     
    
    
        }
    }
    
    
    }

    questo è tipo quello che fa il mio codice. però mi appare sempre la barra di avanzamento piena al termine del ciclo.

    Dove sbalio?

    Mi potresti fare qualche esempio.

    Ho provato anche a vedere l'esempio di SUN ma non sono riuscito a fare tanto

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    19
    Scusa il ritardo ma ho veramente poco tempo per frequentare il forum, comunque guarda questo esempio (non mio, e sicuramente più chiaro di come potrei spiegartelo io) che potrebbe chiarirti il concetto.

    http://andbin.altervista.org/java/ex...gLongWork.java

    Buon lavoro.

  5. #5
    Ti consiglio di crearti una classe che estenda SwingWorker e di ridefinirti i metodi doBackground e done.
    http://download.oracle.com/javase/6/...ingWorker.html
    ed ecco il tutorial della nostra amica sun:
    http://download.oracle.com/javase/tu...cy/worker.html

    io avevo il tuo stesso problema ed ho risolto così
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  6. #6
    Ciao ragazzi, grazie mille.

    Appena rientro a casa proverò subito le vostre soluzioni.

    Speriamo bene

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.