Имам програма, в която се опитвам да изпълня задача, изчакайте секунда, преместете лента за напредък и след това изпълнете друга задача, изчакайте, лента за напредък, изпълнете и т.н.
Ако използвам
Thread.sleep()
той замразява графичния ми интерфейс, не позволявайки на лентата за напредъка ми да се движи. Опитах следните въпроси:
Как да настроите таймер в java
Да накарате нещо да чака, без да използвате Thread.sleep()?
Направете програма на Java да заспива без нишки
Моят код е подобен на този:
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);
Благодаря предварително за всяка помощ.
Рикорбипро
it freezes my GUI, not allowing my progress bar to move.
Трябва да внедрите фонови задачи (включени чакащи) в отделна нишка. Разгледайте този въпрос - person default locale   schedule 17.07.2014SwingWorker.doInBackground
трябва да направи същото. - person default locale   schedule 17.07.2014