为什么我的start方法未定义为计时器类?

iii*_*iii 2 java

import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.*;
import java.util.*;
import javax.swing.Timer.*;

class Timer {

    public static void main(String[] args) {
        JFrame frame = new JFrame();

        final int FIELD_WIDTH = 20;
        final JTextField textField = new JTextField(FIELD_WIDTH);

        frame.setLayout(new FlowLayout());
        frame.add(textField);

        ActionListener listener = new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                Date now = new Date();
                textField.setText(now.toString());
            }
        };

        final int DELAY = 1000;

        Timer t = new Timer();
        t.start();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能是一个语法错误,但我不这么认为,因为我直接从一本书中复制了这个程序.代码行't.start();' 在它下面有一个错误行,说start()方法是未定义的.起初,我认为start()方法不存在,但我在库中查找了它.

Jon*_*eet 8

问题是你要声明自己的 Timer类 - 所以Timer t = new Timer()指的是你的类而不是javax.swing.Timer,并且你没有声明一个start方法.我很确定你想要使用这个javax.swing.Timer类.因此,您要删除该import javax.swing.Timer.*;行,并将您的Timer类重命名为其他内容.

import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.*;
import java.util.*;

public class TimerTest {
    ...
}
Run Code Online (Sandbox Code Playgroud)

话虽如此,你并没有告诉你的计时器任何事情......