繁体   English   中英

按下按钮时如何继续执行工作?

[英]How can I keep executing work while a button is pressed?

我想在按下按钮时使用 Java 继续执行工作。 松开按钮时,工作应停止。 像这样的东西:

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

我怎么能做到这一点?

单程:

  • 将 ChangeListener 添加到 JButton 的 ButtonModel
  • 在此侦听器中,检查模型的isPressed()方法并根据其状态打开或关闭 Swing Timer。
  • 如果你想要一个后台进程,那么你可以用同样的方式执行或取消一个 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);

   }
}

我想在按下按钮时继续执行工作

在另一个线程中执行该过程,然后您的表单不会被阻止,您可以按下按钮取消或停止执行。

看 :

您可能需要使用mousePressed事件来启动操作

并使用mouseReleased事件停止动作(这是必要的)

有关更多信息,请参阅此处

对于安卓应用

我知道这个问题很旧,但您可以使用:

while (yourButton.isPressed()) {

    // Do Stuff
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM