现在,我已经编写了一种在Swing程序中使用的方法,该方法应该减慢调用它的方法的运行速度(通过thread.sleep(x)),而不是减慢它只是导致刷新的速度在方法执行结束时,整个程序将挂起并刷新屏幕。

这是我的代码:

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;


}

}

如果有人可以告诉我应该在哪里放置thread.sleep()来延迟显示被交换的项目,我将不胜感激。

谢谢!

最佳答案

您永远不要在事件分发线程中入睡。


创建模型(在您的情况下为列表)
创建视图(您的Swing GUI)
确保模型更改后视图得到更新(例如,通过添加侦听器)
创建一个单独的线程来定期更新模型(如果愿意,可以使用Thread.sleep
更改“速度”时,更改更新程序线程的睡眠时间


您可能想看一下Timer类(为定期执行操作提供更好的接口)或Swing Workers。

关于java - 我应该在Java swing程序中的哪里使用thread.sleep?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9194721/

10-11 19:45
查看更多