我怎样才能保持执行工作,同时按下按钮?(How can I keep executing work

2019-09-22 01:27发布

我想在按下一个按钮,使用Java来继续执行工作。 当按钮被释放时,工作应停止。 事情是这样的:

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

我会如何实现这一目标?

Answer 1:

单程:

  • 一个ChangeListener添加到JButton的ButtonModel的
  • 在这个监听器检查模型的isPressed()方法和打开或关闭根据其状态的摇摆定时器。
  • 如果你想有一个后台进程,则可以执行或以同样的方式取消的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);

   }
}


Answer 2:

您可能需要使用mousePressed事件开始行动

并使用mouseReleased事件停止动作(这是neccesary)

欲了解更多信息,请参考这里



Answer 3:

我想在按下一个按钮,继续执行工作

执行该进程在另一个线程,然后你的形式不阻止,你可以按下按钮来取消或停止执行。

见:

  • 如何停止Java程序的线程?
  • 停止/取消的SwingWorker线程?
  • 通过按钮控制线


文章来源: How can I keep executing work while a button is pressed?