Threadabhängier JProgressbar

Liebe Freunde,

ich habe 2 Klassen in Java.
Die erste ist die Klasse, die für den Upload zuständig ist:
ClientHTTPRequest

Die zweite ist die Klasse für die GUI und dient als Launcher.

Die 1. Klasse: ClientHTTPRequest:
http://nopaste.coding-community.net/view.php?id=112

Die 2. Klasse: DFApplet

import java.applet.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import javax.swing.JOptionPane;

public class DFApplet extends Applet {
    private String SID;
    private String TID;
    private String receiveURL;
    private String orderno;
    private Image img;
    private InputStream serverInput;
    
    
    public void init() {
        System.out.println("Init. Vers. 1.1 - WAYW_");
        //Parameter aus der Webseite auslesen
        SID = getParameter("SID");
        TID = getParameter("TID");
        receiveURL = getParameter("receiveURL");
        orderno = getParameter("OID");
        
        //TEST;
        SID = "221212112";
        orderno = "1";
        receiveURL = "djdjd";
        TID = "383883";
        //
        
        new DropTarget(this, new DropTargetAdapter() {
            public void drop(DropTargetDropEvent e) {
                try {
                    Transferable t = e.getTransferable();
                    DataFlavor d = e.getCurrentDataFlavors()[0];
                    e.acceptDrop(e.getDropAction());
                    List a = (List) t.getTransferData(d);
                    for (int i = 0; i < a.size(); i++) {
                        processFile((File) a.get(i));
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
        
    }
    
    public void processFile(final File f) {
        
        System.out.println("Datei erhalten!
Sende...");
        
        new Thread(){
            
            public void run(){
                
                try {
                    
                    serverInput = ClientHttpRequest.post(
                            
                            new URL("http://www.xxx.de/test/uptest.php"),
                            
                            new Object[] {
                        
                        "orderno", orderno,
                        
                        "SID", SID,
                        
                        "data", f});
                    
                } catch (MalformedURLException ex) {
                    
                    ex.printStackTrace();
                    
                } catch (IOException ex) {
                    
                    ex.printStackTrace();
                    
                }
                
            }
            
        }.start();

        
        System.out.println("Sendevorgang abgeschlossen.");
        
    
[...]

    
    String showurl="";
    
    if(statusmessage != "OK"){ JOptionPane.showMessageDialog(this, statusmessage, "Uploader-Meldung", JOptionPane.ERROR_MESSAGE); } else {
        //Showurl:
        //ERFOLGREICH!
        showurl = statusmessage.substring(statusmessage.indexOf("$$$%%%"), statusmessage.length());
    }
    showurl = "http://www.xxx/Pictures/attention.gif";
    
    try {
        MediaTracker mt = new MediaTracker(this);
        Image pic = getImage(new URL(showurl));
        pic.getScaledInstance(Applet.WIDTH, Applet.HEIGHT, pic.SCALE_SMOOTH);
        
        mt.addImage(pic, 9);
        setImage(pic);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }



/** Mit Aufruf dieser Methode kann dem Applet zur Laufzeit von außen ein
 * anderes Bild zur Anzeige übergeben werden.
 */
    }
    public void setImage(Image img) {
        this.img = img;
        repaint();
    }
    
    public void paint(Graphics g) {
        if(img != null) {
            g.drawImage(img, 0, 0, this);
        }
    }
    public String readout(InputStream is) throws IOException {
        StringBuffer sb = new StringBuffer();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = br.readLine()) != null)
            sb.append(line);
        return sb.toString();
    }
}

Nun soll meine Uploader-Klasse der 2. Klasse (DFApplet) sagen, wieviel Prozent bereits gesendet wurden. (Der aktuelle Wert steht immer in der Variable percentage).

Das alles benötige ich, um einen Ladebalken in der GUI anzeigen zu können, der den aktuellen Transferstatus repräsentiert.

Zum anderen muss ich auch wissen, ob es auch einen Ladebalken oder einen OptionPane (Pain) für AWT gibt, bzw. ob es lists mit Beispielen gibt.

Vielen Dank an euch! :smiley:
MFG
Rex