1

アクションが実行された場合(ボタンが押された場合など)、JButtonをスムーズに移動するにはどうすればよいですか。これが私の例ですが、正しく機能しません。

   public void actionPerformed(ActionEvent event) {
   for(int i = 0; i<50; i++){
          ww.button.setLocation(ww.button.getLocation().x+1, ww.button.getLocation().y);//ww is a JFrame child
      try {
        Thread.sleep(20);

    } catch (InterruptedException e) {
        e.printStackTrace();
    }

   }

アクションを実行した後、20 * 50ミリ秒の遅延が発生し、ボタンの位置は前のloc + 50pxに設定され、中間の位置はありません。

4

1 に答える 1

3

ThreadSwingを使用している間は、常に避けてください。コードでは、メインのEDTスレッドがスリープ状態になるため、中間の場所を表示できません。Swing Timerを使用してこれを試してみると、意図したとおりに機能するようになります。ここを見てください:Swingタイマーの使用方法とSwingワーカーの使用も試してください。

于 2013-02-28T06:08:50.497 に答える