2012-02-09 11 views
1

私が書いた方法(スイングモジュールへの更新)をループ内で500msの遅延で実行させることが私の目標です。Javaで特定のメソッドの実行を遅くするにはどうすればいいですか

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; 
} 

} 

編集:たとえば、ここに私のループがどのように見えるか大体だより良い私の目標を明確にする:私の目的は、赤に自分の色を変更することにより、バブルソートにスワップされようとしている2つの数値を強調することで、 .5sを待ってからそれらを入れ替えて、その色をnullに戻しています(以前はColor.WHITEではなく、色をnullに変更してからコードを修正しました)。混乱させて申し訳ありません。

答えて

3

javax.swing.Timerクラスを使用して、指定された間隔でイベントを実行します。このメカニズムは、Swingコンポーネントがイベントディスパッチスレッドで変更されることを保証します。

関連する問題