I have a program that I am trying to execute a task in, wait a second, move a progress bar, and then execute another task, wait, progress bar, execute, etc.
If I use
Thread.sleep()
it freezes my GUI, not allowing my progress bar to move. I have tried the following questions:
Make something wait without using Thread.sleep()?
Make a java program sleep without threading
My code is similar to this:
import java.util.*
...
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
Runtime.getRuntime().exec("cmd /c del file");
} catch (IOException ex) {
Logger.getLogger(AdminHome.class.getName()).log(Level.SEVERE, null, ex);
}
}
}, 1000);
progressBar.setValue(16);
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
Runtime.getRuntime().exec("cmd /c del file");
} catch (IOException ex) {
Logger.getLogger(AdminHome.class.getName()).log(Level.SEVERE, null, ex);
}
}
}, 1000);
progressBar.setValue(32);
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
Runtime.getRuntime().exec("cmd /c del file");
} catch (IOException ex) {
Logger.getLogger(AdminHome.class.getName()).log(Level.SEVERE, null, ex);
}
}
}, 1000);
progressBar.setValue(48);
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
Runtime.getRuntime().exec("cmd /c del file");
} catch (IOException ex) {
Logger.getLogger(AdminHome.class.getName()).log(Level.SEVERE, null, ex);
}
}
}, 1000);
progressBar.setValue(64);
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
Runtime.getRuntime().exec("cmd /c del file");
} catch (IOException ex) {
Logger.getLogger(AdminHome.class.getName()).log(Level.SEVERE, null, ex);
}
}
}, 1000);
progressBar.setValue(80);
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
Runtime.getRuntime().exec("cmd /c del file");
} catch (IOException ex) {
Logger.getLogger(AdminHome.class.getName()).log(Level.SEVERE, null, ex);
}
}
}, 1000);
progressBar.setValue(100);
progressBar.setString("Done!");
timer.schedule(new TimerTask() {
@Override
public void run() {
}
}, 1000);
System.exit(0);
Thanks in advance for any help.
Riccorbypro