【发布时间】:2015-11-10 05:22:44
【问题描述】:
我编写了这个 Swing 计时器,它应该运行 10 次然后停止。但是,编译器说 Timer 没有初始化。我不想初始化它,我也不需要(here 是一个没有初始化但可以工作的例子)。怎么了?
public Enhanced() {
Timer picTimer ;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 422);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblTimer = new JLabel();
lblTimer.setBounds(361, 67, 61, 16);
contentPane.add(lblTimer);
ActionListener a = new ActionListener() {
int time=0;
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("hello");
if (++time > 10) {
picTimer.stop();
System.exit(0);
}
}
};
picTimer = new Timer(1000,a);
}
【问题讨论】:
-
您确定您导入了正确的计时器吗? 'javax.swing.Timer',你可能不小心导入了'java.util.Timer'
-
timer在链接示例中是一个实例变量,因此它被初始化为null,并且监听器也可以访问它(因此可以稍后创建Timer实例)。在您的示例中,它是一个未初始化的局部变量。