Timer funktioniert nicht, wieso?

Yuri-Li

Grünschnabel
Hey,
ich habe ein kleines Problem mit einen Timer.
Im Quellcode ist zuentnehmen, dass ich ein Button erstellt habe, diesen deaktivieren und nach 5 sekunden wieder aktivieren will und zwischendurch kommt der Text "Hallo Welt!".
Jedoch kommt bei mir immer die Fehlermeldung: "Cannot find symbol" (für die Zeile: timer.schedule(new TimerTask() { )

Code:
import java.util.Timer;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class ButtonTest
{

      JFrame fenster = new JFrame("Kartentest");
      fenster.setLayout(new BorderLayout());

      final JButton Bild01 = new JButton();
      Bild01.setBackground(new Color(238, 238, 238));
      Bild01.addActionListener(new ActionListener()
         { public void actionPerformed(ActionEvent event01)
               Bild01.setEnabled(false);
               Timer timer = new Timer(); 
                         timer.schedule(new TimerTask() {
                             public void run() {
                                 System.out.println("Hallo Welt!");
                                }
                            }, 5000);                 
                       
                       Bild01.setEnabled(true);
           });

         fenster.add(Bild01 );
         fenster.pack();
        fenster.setVisible(true);
}

meine frage ist nun, warum?

lg
Yuri
 
Hi,
ich habe mal deinen Code von
Java:
Timer timer = new Timer();
bis zu
Java:
   }, 5000);
eingefügt und es funktioniert ohne Probleme :confused:.

Allergings kann das Programm, so wie du es kopiert hast, gar nicht funktionieren.
Du rufst nämlich Methoden außerhalb einer anderen Methode auf, d. h. deine Buttonkonfiguration ist im Klassenrumpf eingebaut. Außerdem schreibt man finale Variablen entweder klein oder [size=+1]groß[/size].
 
ich habe das nochmal korregiert mit den Klassenrumpf, danke für den hinweis.
Nichts desto trotz kriege ich die gleiche Nachricht aus :(
Gibt es denn noch ne andere Möglichkeit eine Warteschleife zusetzen bei der das Programm aber noch nebenbei was macht?

lg
Yuri
 
Ich hab deinen Code auch mal kopiert und den ganzen Code in einen Konstruktor eingefügt, noch 2 fehlende Klammern eingesetzt und java.util.TimerTask importiert, das hast du auch noch vergessen ;)
Dann funktioniert das Programm.


Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JFrame;

public class ButtonTest {
	public ButtonTest() {
		JFrame fenster = new JFrame("Kartentest");
		fenster.setLayout(new BorderLayout());

		final JButton Bild01 = new JButton();
		Bild01.setBackground(new Color(238, 238, 238));
		Bild01.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event01) {
				Bild01.setEnabled(false);
				Timer timer = new Timer();
				timer.schedule(new TimerTask() {
					public void run() {
						System.out.println("Hallo Welt!");
					}
				}, 5000);

				Bild01.setEnabled(true);
			}
		});

		fenster.add(Bild01);
		fenster.pack();
		fenster.setVisible(true);
	}

             public static void main(String[] args) {
		new ButtonTest();
	}
}
}
Die neu eingefügten Sachen sind rot markiert.
 
Zuletzt bearbeitet:
Zurück