Swing JProgressBar updaten

enHanced

Mitglied
Hallo,

ich habe gerade das erste mal eine JProgressBar auf einem JPanel verbaut.
Diese wollte ich nun testhalber aus einem anderem Thread heraus updaten..

Habe vorher etliche Beiträge darüber gelesen und in jedem hieß es die updateFunktion darf nicht im Thread von Swing ausgeführt werden sondern in einem ausgelagerten..funktioniert nur nicht ( wahrscheinlich weil ich es falsch gemacht hab 🙂 )

Wäre nett wenn ihr kurz drüber gucken würdet:

Aufruf des Threads wo der Prozess abgearbeitet wird und der die jProgressBar updaten soll:

Java:
        Thread t = new Thread(new NewClass(jProgressBar1));
        t.run();

Meine "Testklasse":
Java:
package gui.Dialogs;

import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;

public class NewClass implements Runnable {

    JProgressBar jp;

    public NewClass(JProgressBar jp) {
        this.jp = jp;
    }

    public void someProgress() throws InterruptedException {
        int i;
        for (i = 0; i < 100; i++) {
            Thread.sleep(500);
            updateTextField(i);           
           i++;

        }
    }

    public void updateTextField(int i2) {
        final int i = i2;
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                jp.setValue(i);
                jp.updateUI();
            }
        });

    }

    @Override
    public void run() {
        try {
            someProgress();
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }
}

Resultat wenn ich das ganze ausführe:

die Gui hängt und wird blockiert.. aber warum ? Darf ich die Referenz nicht einfach übergeben?

Vielen Dank schon mal !

P.S.: Stört euch bitte nicht an den Funktionsnamen , habe es vorher mit einem Textfeld versucht 🙂

Grüße,
Benjamin
 
das
Code:
jp.updateUI()
muss weg, ansonsten sehe ich spontan einen Fehler...

SwingWorker sind aber genau dafür gedacht, kannst ja mal danach googlen. Gibt auch genug Beispiele mit Progressbars.
 

Neue Themen


Zurück
Oben