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:
Meine "Testklasse":
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
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