Как я могу замедлить выполнение определенного метода в Java - PullRequest
1 голос
/ 09 февраля 2012

Моя цель - заставить написанный мной метод (который обновляет модуль Swing) работать с задержкой в ​​500 мс в цикле. Например, вот как должен выглядеть мой цикл:

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])  ){
        String tempVariable = numbers[i];  
        numbers[i] = numbers[i - 1];  
        numbers[i - 1] = tempVariable;  
        isSorted = false; 
        str1 = numButton[i].getText();
        numButton[i].setBackground(Color.RED);           
        numButton[i-1].setBackground(Color.RED);

        //Pause here for 500 ms

        numButton[i].setText(numButton[i-1].getText());
        numButton[i-1].setText(str1);
        numButton[i].setBackground(null);           
        numButton[i-1].setBackground(null);

     }   
  }  

  if (isSorted)  
     break;  
}  

}

Редактировать: чтобы лучше прояснить мои цели: моя цель - выделить два числа, которые должны поменяться местами в пузырьковой сортировке, изменив их цвет на красный, подождать 5 секунд, затем поменять их и вернуть их цвет к нулю (я пересмотрел код с тех пор, чтобы изменить цвет на ноль, а не на Color.WHITE, как это было раньше). Извините за путаницу.

1 Ответ

3 голосов
/ 09 февраля 2012

Используйте класс javax.swing.Timer для выполнения событий с заданным интервалом.Этот механизм обеспечит изменение компонентов Swing в потоке диспетчеризации событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...