2010-01-05 4 views
0

Comment puis-je afficher la progression dans un jProgressBar lorsque j'écris quelque chose dans la base de données?jProgressBar avec base de données

Merci

+0

Avez-vous des problèmes pour afficher le 'JProgressBar'? –

+0

Non, je peux l'afficher, je ne peux pas le relier à la progression de la base de données. –

Répondre

0

Sur votre serveur, vous devez collecter les données de progression et de fournir d'une manière que jProgressBar peut l'interroger.

1

Vous utiliserez généralement un SwingWorker pour mettre à jour le JProgressBar à partir de l'unité d'exécution Event Dispatch tout en effectuant les opérations d'écriture de base de données sur le thread d'arrière-plan. Par exemple:

// Create progress bar to represent 10 items we wish to write to 
// the database (hence min := 0, max := 10); 
JProgressBar pBar = new JProgressBar(0, 10); 

// TODO: Add progress bar to panel and display. 

// Invoke SwingWorker to perform database write operations on 
// background thread. 
new SwingWorker<Void, Integer>() { 
    /** 
    * Called on background worker thread. Performs DB write operations. 
    */ 
    public Void doInBackground() { 
    for (int i=0; i<10; ++i) { 
     // TODO: Perform DB write operation here. 

     // Publish progress so far back to Event Dispatch Thread. 
     publish(i); 
    } 
    } 

/** 
    * Called on EDT with intermediate progress result(s). 
    */ 
protected void process(List<Integer> chunks) { 
    if (!chunks.isEmpty()) { 
    int progress = chunks.get(chunks.size() - 1); 
    pBar.setValue(progress); 
    } 
}  

/** 
    * Called on EDT when DB write task has completely finished. 
    */ 
protected void done() { 
    pBar.setValue(pBar.getMaximum()); 
    // TODO: Hide progress bar, etc. 
} 
}.execute()