5

ボタンを押している間、Javaを使って作業を続けたい。ボタンを離すと、作業が停止します。このようなもの:

Button_is_pressed()
{
    for(int i=0;i<100;i++)
    {
        count=i;
        print "count"
    }
}

どうすればこれを達成できますか?

4

4 に答える 4

10

一方通行:

  • JButton の ButtonModel に ChangeListener を追加します。
  • このリスナーで、モデルのisPressed()メソッドをチェックし、その状態に応じて Swing タイマーをオンまたはオフにします。
  • バックグラウンド プロセスが必要な場合は、同じ方法で SwingWorker を実行またはキャンセルできます。

前者の例:

import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class ButtonPressedEg {
   public static void main(String[] args) {
      int timerDelay = 100;
      final Timer timer = new Timer(timerDelay , new ActionListener() {

         @Override
         public void actionPerformed(ActionEvent e) {
            System.out.println("Button Pressed!");
         }
      });

      JButton button = new JButton("Press Me!");
      final ButtonModel bModel = button.getModel();
      bModel.addChangeListener(new ChangeListener() {

         @Override
         public void stateChanged(ChangeEvent cEvt) {
            if (bModel.isPressed() && !timer.isRunning()) {
               timer.start();
            } else if (!bModel.isPressed() && timer.isRunning()) {
               timer.stop();
            }
         }
      });

      JPanel panel = new JPanel();
      panel.add(button);


      JOptionPane.showMessageDialog(null, panel);

   }
}
于 2012-09-01T05:16:03.470 に答える
1

ボタンを押している間、作業を実行し続けたい

そのプロセスを別のスレッドで実行すると、フォームがブロックされなくなり、ボタンを押して実行をキャンセルまたは停止できます。

見る :

于 2012-09-01T05:16:25.077 に答える
1

mousePressedイベントを使用してアクションを開始する必要がある場合があります

イベントを使用 mouseReleasedしてアクションを停止します(これは必須です)

詳細については、こちらを参照してください

于 2012-09-01T05:19:29.313 に答える