我在Timer类中找不到start()方法

时间:2013-10-19 16:58:48

标签: java timer

此程序的目的是从另一个用户获取一个号码,然后倒计时。

我还没有完成程序,因为我需要使用的方法不存在。

我正在尝试启动计时器,但我找不到方法start()&任何其他方法。

我是否需要导入其他课程? ----->定时器;

 package timerprojz;

 import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Timer;
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JTextField;
 import javax.swing.SwingConstants;

 public class TimeProjz extends JFrame {

    JLabel promptLabel, timerLabel;
    int counter;
    JTextField tf;
    JButton button;
    Timer timer;

public TimeProjz() {

    setLayout(new GridLayout(2, 2, 5, 5)); // 2 row 2 colum and spacing

    promptLabel = new JLabel("Enter seconds", SwingConstants.CENTER);
    add(promptLabel);

    tf = new JTextField(5);
    add(tf);

    button = new JButton("start timeing");
    add(button);

    timerLabel = new JLabel("watting...", SwingConstants.CENTER);
    add(timerLabel);

    Event e = new Event();
    button.addActionListener(e);

}

public class Event implements ActionListener {

    public void actionPerformed(ActionEvent event) {


        int count = (int) (Double.parseDouble(tf.getText()));

        timerLabel.setText("T ime left:" + count);

        TimeClass tc = new TimeClass(count);
        timer = new Timer(1000, tc);
        timer.start(); <-----------------can not find symbol


       }
    }
 }

5 个答案:

答案 0 :(得分:3)

时间没有启动方法。你应该像这样使用它:

import java.util.Timer;
import java.util.TimerTask;

/**
 * Simple demo that uses java.util.Timer to schedule a task 
 * to execute once 5 seconds have passed.
 */

public class Reminder {
    Timer timer;

    public Reminder(int seconds) {
        timer = new Timer();
        timer.schedule(new RemindTask(), seconds*1000);
    }

    class RemindTask extends TimerTask {
        public void run() {
            System.out.format("Time's up!%n");
            timer.cancel(); //Terminate the timer thread
        }
    }

    public static void main(String args[]) {
        new Reminder(5);
        System.out.format("Task scheduled.%n");
    }
}

你可以在run方法中写下你的逻辑。

答案 1 :(得分:2)

多个问题:

  • 您在Swing中使用java.util.Timer!使用java.swing.Timer代替具有您需要的start()功能:)。

  • 除了没有start()函数java.util.Timer之外,还没有这种类型的构造函数:new Timer(1000, tc)其中java.swing.Timer有:

    Timer(int delay, ActionListener litener)

  • Timer函数中actionPerformed()的实例创建样式也是错误的。查看How to Use Swing Timers教程和示例。

建议使用Swing计时器而不是通用计时器用于GUI相关任务,因为Swing计时器都共享相同的预先存在的计时器线程,并且GUI相关任务自动执行event-dispatch thread。但是,如果您不打算从计时器触摸GUI,或者需要执行冗长的处理,则可以使用通用计时器。

答案 2 :(得分:1)

您正在尝试使用Java.util.Timer

改为使用Java.swing.Timer,或使用TimerTask

答案 3 :(得分:0)

如果您使用的是Timer类,则应调用schedule方法,如:

Timer time = new Timer();
time.schedule(task, time);

答案 4 :(得分:0)

import javax.swing.Timer;

这将解决问题 导入import java.util.Timer;