Right now I’ve programmed a method for use in a swing program that is supposed to slow down the speed the method it’s called in is run (via thread.sleep(x) ) and instead of slowing down the speed of refresh it’s just causing the whole program to hang and the screen to refresh at the end of the methods execution.
Here’s my code:
public final void doBubbleSort(String numbers[], JButton numButton[]){
for (int k = 0; k < numbers.length - 1; k++){
String str1 = "";
boolean isSorted = true;
for (int i = 1; i < numbers.length - k; i++){
if (Integer.parseInt(numbers[i]) < Integer.parseInt(numbers[i - 1]) ){
try{
String tempVariable = numbers[i];
numbers[i] = numbers[i - 1];
numbers[i - 1] = tempVariable;
isSorted = false;
str1 = numButton[i].getText();
numButton[i].setText(numButton[i-1].getText());
Thread.sleep(100);
}catch(Exception e){ System.err.println("Error: " +e.getMessage()); }
numButton[i-1].setText(str1);
}
}
if (isSorted)
break;
}
}
If anyone can tell me where I should be putting thread.sleep() to make it delay the display of items being swapped I would be greatly appreciate it.
Thanks!
You should never sleep in the event dispatch thread.
Thread.sleepif you so like)You may want to have a look at the
Timerclass (which provides a nicer interface for doing things at a regular interval) or the Swing Workers.