hallo,
die fortschrittsanzeige jprogressbar aktualisiert sich nicht.
mein programm durchläuft eine zählschleife und mit setvalue(zähler) sollte der balken neue werte anzeigen. zwischendurch passiert gar nichts. am ende steht dann 100%.
kann mir jemand helfen, irgendwie den fortschritt anzeigen zu lassen?
hallo,
die fortschrittsanzeige jprogressbar aktualisiert sich nicht.
mein programm durchläuft eine zählschleife und mit
setvalue(zähler) sollte der balken neue werte anzeigen.
zwischendurch passiert gar nichts. am ende steht dann 100%.
Das Problem ist, dass Dein Programm im Swing-Thread läuft, der auch die Aktualisierung (indirekt) durchführt. Einfach ein
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//do whatever you want;
}
});
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//do whatever you want;
}
});
hallo frank,
also ich habe einen controller und eine hauptmaske. der controller durchläuft eine schleife (test für späteren verarbeitungsblock) und ruft darin eine methode der maske auf, die ihren progressbar einen neuen wert verpasst (progressbar.setvalue(zaehler)).
! controller.java !
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int a=1;a
---
! Maske !
public void setProgressBarValue (int value){
progressBar.setValue(value);
}
nur bisher funktioniert das nicht, ich glaube ich habe dich nicht richtig verstanden.
hilf mir bitte.
gruß christian
Du musst den setProgressBarBalue durch ein invokeLater kapseln.
Durch Deinen Aufruf legst Du den SwingThread schlafen.
invokeLater erzeugt ein Ereignis in der Event-Queue von Swing, welches dann „synchron“ im Swing-Thread abgearbeitet wird.
Deine teure Berechnung kann in einem eigenen Thread gemacht werden. Nur der Aufruf maske.setPrograssBarValue … sollte entsprechend gekapselt werden.
Gruss,
Frank
also ich habe einen controller und eine hauptmaske. der
controller durchläuft eine schleife (test für späteren
verarbeitungsblock) und ruft darin eine methode der maske auf,
die ihren progressbar einen neuen wert verpasst
(progressbar.setvalue(zaehler)).
! controller.java !
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int a=1;a
! Maske !
public void setProgressBarValue (int value){
progressBar.setValue(value);
}
nur bisher funktioniert das nicht, ich glaube ich habe dich
nicht richtig verstanden.
hilf mir bitte.