>>909
Java6でOKならばSwingTimerは使わない方がいい。
変りにSwingWorker という並行処理専用のクラスを使用すると、スレッドをほとんど意識せずに裏方処理をさせられる。

class UpDownWorker extends SwingWorker {
  @Override
  public Object doInBackground() {
     // ここに並行に処理をおこなう内容を記述
    // ループさせながら順次アニメーションさせるなど
    // このメソッドはEDTで実行されるので直接コンポーネントを操作してOK     }
  @Override
  protected void done() {
    // 処理が終わったときに呼ばれるメソッド
    // ボタンをアクティブに戻すとか
  }
}
使う側
UpDownWorker worker = new UpDownWorker();
worker.execute();  // ←処理が終了までブロックされずに、すぐ制御が戻る

ちなみにworkerからは実行結果を取得したり、例外が発生したらそれを検知したり、キャンセルをかけられたりと色々な機能があるよ。