Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing计时器启动问题_Java_Swing_Netbeans_Timer - Fatal编程技术网

Java Swing计时器启动问题

Java Swing计时器启动问题,java,swing,netbeans,timer,Java,Swing,Netbeans,Timer,使用有用用户Stefan提供的代码,我编辑了自己的代码来模拟他的,但是我根本无法启动计时器。我曾尝试将实例移出private void,这会导致其他错误,比如尝试重新定义timer变量 private Timer timer; private void StartStopTimerActionPerformed(java.awt.event.ActionEvent evt) {

使用有用用户Stefan提供的代码,我编辑了自己的代码来模拟他的,但是我根本无法启动计时器。我曾尝试将实例移出private void,这会导致其他错误,比如尝试重新定义timer变量

private Timer timer;        

private void StartStopTimerActionPerformed(java.awt.event.ActionEvent evt) {                                               

    timer = new Timer(5000,new ActionListener(){

        @Override
        public void actionPerformed(ActionEvent evt) {

        }
    });

    StartStopTimer.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (!timer.isRunning()) {
                timer.start(); AddOneActionPerformed(evt);
            } else {
                timer.stop();
            }
        }
    });
}                 

此代码对计时器没有影响。它不会开始计数

您在每次单击按钮(第3行)时都会创建新计时器。将计时器设置为类中的一个字段,初始化它一次,并且只在ActionListeners中调用start和stop

要暂停计时器调用“stop()”,要重置计时器,请调用“restart()”

更新

import javax.swing.Timer;

class TimerExample {

   // only one timer per class (field)
   private Timer timer;

   TimerExample() {

    // initialize: counts 5 seconds, calls actionPerformed() and stops
    timer = new Timer(1000, new ActionListener(){

      @Override
      public void actionPerformed(ActionEvent evt) {
        // handle timer invoked ...
        System.out.println("Now!");
      }      
    });
    timer.setRepeats(true);

    JButton startStopBtn = new JButton("Start / Stop");
    startStopBtn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (!timer.isRunning()) {
                timer.start();
            } else {
                timer.stop();
            }
        }
    });
  }
 ...
}

您在每次单击按钮(第3行)时都会创建新计时器。将计时器设置为类中的一个字段,初始化它一次,并且只在ActionListeners中调用start和stop

要暂停计时器调用“stop()”,要重置计时器,请调用“restart()”

更新

import javax.swing.Timer;

class TimerExample {

   // only one timer per class (field)
   private Timer timer;

   TimerExample() {

    // initialize: counts 5 seconds, calls actionPerformed() and stops
    timer = new Timer(1000, new ActionListener(){

      @Override
      public void actionPerformed(ActionEvent evt) {
        // handle timer invoked ...
        System.out.println("Now!");
      }      
    });
    timer.setRepeats(true);

    JButton startStopBtn = new JButton("Start / Stop");
    startStopBtn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (!timer.isRunning()) {
                timer.start();
            } else {
                timer.stop();
            }
        }
    });
  }
 ...
}

抱歉,我不想打扰你们,但你们介意举个例子吗?我为你们的代码制作了一个单独的java文件,但我一直在包中得到错误create class timer。我不是100%确定这意味着什么。我还遇到另一个错误,即无法将Int转换为String,其中以毫秒为单位的值是我用您提供的代码修改我的代码的,但现在的问题是计时器不会启动对不起,我不想打扰您,但您介意给出一个示例吗?我为您的代码制作了一个单独的java文件,但我一直在包中得到错误CREATECLASSTIMER。我不是100%确定这意味着什么。我还收到另一个错误,即无法将Int转换为String,其中以毫秒为单位的值是我用您给出的代码修改代码的,但现在的问题是计时器将不会启动示例中提到的,计时器在5秒后执行actionPerformed方法一次。如果希望计时器每秒计数,则需要将间隔(5000)设置为1000,并调用timer.setRepeats(true)。更新了我的答案。正如我在示例中提到的,计时器在5秒后执行actionPerformed方法一次。如果希望计时器每秒计数,则需要将间隔(5000)设置为1000,并调用timer.setRepeats(true)。更新了我的答案。