按下按钮时如何继续执行工作? [英] How can I keep executing work while a button is pressed?

查看:208
本文介绍了按下按钮时如何继续执行工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望在按下按钮时继续执行工作,使用Java。释放按钮后,工作应该停止。这样的事情:

I want to keep executing work while a button is pressed, using Java. When the button is released, the work should stop. Something like this:

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

我怎么可能实现这个目标?

How might I achieve this?

推荐答案

单程:


  • 将一个ChangeListener添加到JButton的ButtonModel

  • 在此侦听器中检查模型的 isPressed()方法并打开或关闭Swing Timer取决于它的状态。

  • 如果你想要后台进程,那么你可以用同样的方式执行或取消SwingWorker。

  • Add a ChangeListener to the JButton's ButtonModel
  • In this listener check the model's isPressed() method and turn on or off a Swing Timer depending on its state.
  • If you want a background process, then you can execute or cancel a SwingWorker in the same way.

前者的一个例子:

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);

   }
}

这篇关于按下按钮时如何继续执行工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆