timer.stop() でエラーが発生します。「ローカル変数 timer はクラス内からアクセスされます。final を宣言する必要があります」と表示されます。
public static void main(String args[]) {
int tick;
Timer timer;
timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int tick=0;
System.out.println("Success" + ++tick);
if (tick > 4) {
timer.stop();
}
}
});
timer.setInitialDelay(0);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
私はこれを試しました:
public static void main(String args[]) {
int tick;
Timer timer;
final Timer timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int tick=0;
System.out.println("Success" + ++tick);
if (tick > 4) {
timer.stop(); //this refers to the final variable timer, this is valid.
}
}
});
timer.setInitialDelay(0);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
そして今、「final Timer timer = new Timer(1000, new ActionListener() {」というエラーが発生します。そのタイマーはすでに main(java.lang.String[]) で定義されており、Timer timer を削除すると、「 timer.stop()」変数タイマーが初期化されていない可能性があります