1

这个程序的目的是从另一个用户那里得到一个数字,然后倒计时。

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

我正在尝试启动计时器,但找不到方法 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


       }
    }
 }
4

5 回答 5

3

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

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 方法中编写逻辑。

于 2013-10-19T17:01:58.447 回答
2

多个问题:

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

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

    Timer(int delay, ActionListener litener)

  • Timer您的in函数的实例创建方式actionPerformed()也是错误的。检查如何使用摆动计时器教程和示例。

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

于 2013-10-19T17:01:58.153 回答
1

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

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

于 2013-10-19T17:01:50.447 回答
1
import javax.swing.Timer;

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

于 2019-02-20T18:03:34.640 回答
0

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

Timer time = new Timer();
time.schedule(task, time);
于 2013-10-19T17:01:42.190 回答