2

ユーザーが単一の行を選択できるJTableがあります。その場合は、ページの別の部分を短時間「ハイライト」して、これがユーザーの操作後に変更されたページの部分であることを示したいと思います。

だから私の質問は:これを達成するための最良の方法は何ですか?現時点では、そのパネルの背景色を設定し、少し遅れて色を元に戻すSwingWorkerを起動することでそれを行いました。意図したとおりに機能しますが、そのようなSwingWorkerを使用することをお勧めしますか?そのアプローチに欠点はありますか?これをどのように解決しますか?

前もって感謝します。

4

2 に答える 2

2

スケジュールされたすべてのイベントに単一のスレッドを再利用し、メインイベントループでイベントコードを実行するため、Swingタイマーの方が適していると思います。したがって、SelectionListenerコード内で次のことを行います。

// import javax.swing.Timer;

final Color backup = componentX.getBackground();
componentX.setBackground(Color.YELLOW);
final Timer t = new Timer(700, new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    componentX.setBackground(backup);
  }
});
t.setRepeats(false);
t.start();
于 2012-07-10T07:49:29.720 に答える
0

スイングタイマー(javax.swing.Timer)をお勧めします。(Java.utilでTimerクラスを使用しないでください)

ここでタイマーを作成します。

Timer t = new Timer(loopTime,actionListener)//loopTime is unimportant for your use of this
t.setInitialDelay(pause)//put the length of time between starting the timer and the color being reverted to normal
t.setRepeats(false);//by default, timer class runs on loop.
t.start();//runs the timer

タイマーへの参照を保持し、必要なときにt.startを呼び出すのはおそらく理にかなっています。

タイマーイベントを処理するには、アクションリスナーを実装する必要があります。方法がわからない場合は編集できますが、すでにSwingで作業を行っているので、問題はないと思います。

于 2012-07-09T16:15:18.280 に答える