Zufallsgererator der eigentlich keiner ist

Dan1el

Mitglied
Hallo,

ich muss einen "Zufallsgenerator" für unseren Abiball programmieren. Mit diesem "Zufallsgenerator" sollen Paarungen der Lehrer für Spiele auf dem Ball erzeugt werden.

Natürlich sind diese Paarungen jetzt schon von uns festgelegt, es soll halt nur der Anschein erweckt werden, dass alles zufällig wäre.

Das möchte ich mit einer Schleife lösen. Es sollen also immer verschiedene Bilder der Lehrer angezeigt werden und schließlich soll der "Bilderwechsel" mit dem von uns für die erste Paarung festgelegten Lehrer aufhören.

Hier mein Ansatz (der leider nicht funktioniert)

Java:
public class Zufallsgenerator extends JFrame 

{
    JButton start = new JButton("START");
    
    JLabel anzeige = new JLabel();
     
    Icon bild1 = new ImageIcon( "bild1.jpg" );
    Icon bild2 = new ImageIcon( "bild2.jpg" );
    Icon bild3 = new ImageIcon( "bild3.jpg" );
    Icon bild4 = new ImageIcon( "bild4.jpg" );
    Icon bild5 = new ImageIcon( "bild5.jpg" );
    Icon bild6 = new ImageIcon( "bild6.jpg" );
    Icon bild7 = new ImageIcon( "bild7.jpg" );
    Icon bild8 = new ImageIcon( "bild8.jpg" );
    Icon bild9 = new ImageIcon( "bild9.jpg" );
  
  public Zufallsgenerator() 
  
  {
    super("Zufallsgenerator");
    setLayout(new BorderLayout());
 
 	JPanel panel1 = new JPanel();
	panel1.setLayout(new FlowLayout());
	textfeld = new JLabel("Zufallsgenerator");
	panel1.add(textfeld);
	
	JPanel panel2 = new JPanel();
	panel2.add(anzeige);
	add(panel2,BorderLayout.CENTER);
	
	add(panel1,BorderLayout.NORTH);
	add(start,BorderLayout.SOUTH);
	start.addActionListener(new MyActionListener());
	
    setSize(600,800);
    setLocation(100,100);
    setResizable(false);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  
  public static void main(String[] args) 
  {
      new Zufallsgenerator();
      
  }
           
  	class MyActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{	
			anzeige.setIcon(bild1);
			setVisible(true);
			
			for(int a=0; a<1000000; a++)
			{
				
				if(a==900000)
				{
					anzeige.setIcon(bild2);
					setVisible(true);
					System.out.println("Bild2");
				}
				if(a==800000)
				{
					anzeige.setIcon(bild3);
					setVisible(true);
				}				
				if(a==700000)
				{
					anzeige.setIcon(bild4);
					setVisible(true);
				}				
				if(a==600000)
				{
					anzeige.setIcon(bild5);
					setVisible(true);
				}
				if(a==500000)
				{
					anzeige.setIcon(bild6);
					setVisible(true);
				}
				
			}// Ende Schleife
		}		
	} //class MyActionListener

}

Die import anweisungen habe ich hier weggelassen.
 
G

Gast2

Gast
Es sollen also immer verschiedene Bilder der Lehrer angezeigt werden und schließlich soll der "Bilderwechsel" mit dem von uns für die erste Paarung festgelegten Lehrer aufhören
Ich würde einfach nen paar Sekunden lang in ner Schleife alle Bilder zufällig anzeigen lassen. Wenn die Schleife dann vorbei ist zeigst du dein gewünschtes bild an:

Java:
    public static void main(String[] args) {
        Random rand = new Random();
        for (int i = 0; i < 10;  i++) {
            System.out.println("Bild" + rand.nextInt(10));
        }
        System.out.println("Bild5");
    }
 

Dan1el

Mitglied
Ich habs jetzt angepasst:
Java:
class MyActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{	
			anzeige.setIcon(bild1);
			setVisible(true);
			
			Random rand = new Random();
        	for (int i = 0; i < 1000;  i++) 
        	{
            	anzeige.setIcon("bild" + rand.nextInt(9);
            	setVisible(true);
            	System.out.println("bild" + rand.nextInt(9));
        	}
        	anzeige.setIcon(bild5);
			setVisible(true);
		}		
	} //class MyActionListener

Allerdings bekomme ich jetzt 2 Fehlermeldungen:

C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:69: setIcon(javax.swing.Icon) in javax.swing.JLabel cannot be applied to (java.lang.String)
anzeige.setIcon("bild" + rand.nextInt(9));

Und:

C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:66: cannot find symbol
symbol : class Random
location: class Zufallsgenerator.MyActionListener
Random rand = new Random();

Beim zweiten Fehler muss ich wohl noch was importieren?
 
G

Gast2

Gast
Ja du musst noch
Code:
java.util.Random;
importieren.

Zu deinem ersten Fehler:
Du kannst nicht einfach dein ImageIcon als String übergeben. Ich würde die ImageIcons in ein Array packen und dann später so anzeigen lassen:

Java:
                anzeige.setIcon(bild1);

                Random rand = new Random();
                for (int i = 0; i < 1000;  i++) 
                {
                    anzeige.setIcon(icons[rand.nextInt(10)]);
                }

                anzeige.setIcon(bild5);
                setVisible(true);
Wichtig ist hierbei, dass du die Schleife nicht auf dem EDT ausführst.
 

Dan1el

Mitglied
Irgendwie schaff ichs nicht die Bilder in ein Array zu packen :(
Java:
    Icon [] bild = new ImageIcon[9];
    
    Icon bild[0] = new ImageIcon( "bild1.jpg" );
    Icon bild[1] = new ImageIcon( "bild2.jpg" );
    Icon bild[2] = new ImageIcon( "bild3.jpg" );
    Icon bild[3] = new ImageIcon( "bild4.jpg" );
    Icon bild[4] = new ImageIcon( "bild5.jpg" );
    Icon bild[5] = new ImageIcon( "bild6.jpg" );
    Icon bild[6] = new ImageIcon( "bild7.jpg" );
    Icon bild[7] = new ImageIcon( "bild8.jpg" );
    Icon bild[8] = new ImageIcon( "bild9.jpg" );

Da spuckt er mir Fehlermeldungen ohne Ende aus.
 

Dan1el

Mitglied
Java:
Icon [] bild = new ImageIcon[9];
 
bild[0] = new ImageIcon( "bild1.jpg" );
das hat auch nichts gebracht:

C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: ']' expected
bild[0] = new ImageIcon( "bild1.jpg" );
^
C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: ';' expected
bild[0] = new ImageIcon( "bild1.jpg" );
^
C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: illegal start of type
bild[0] = new ImageIcon( "bild1.jpg" );
^
C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: <identifier> expected
bild[0] = new ImageIcon( "bild1.jpg" );
^
C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: ';' expected
bild[0] = new ImageIcon( "bild1.jpg" );
^
C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: illegal start of type
bild[0] = new ImageIcon( "bild1.jpg" );
^
C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: <identifier> expected
bild[0] = new ImageIcon( "bild1.jpg" );
^
C:\Users\daniel\Desktop\ABIBALL\Zufallsgenerator\Zufallsgenerator.java:27: ';' expected
bild[0] = new ImageIcon( "bild1.jpg" );
 

faetzminator

Gesperrter Benutzer
1. Eigne dir zuerst doch bitte Mal die Programmiergrundlagen an.
2. Sieht so aus, als würdest du das ausserhalb einer Methode versuchen.
 

Dan1el

Mitglied
zu 1: Ich kenne eigentlich die Grundlagen, nur habe ich bisher noch nie mit Swing oder Bilder gearbeitet.

zu 2: stimmt, hab den Fehler behoben.

Die Bilder werden jetzt erfolgreich geladen.

So sieht das jetzt aus:

Java:
 class MyActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{	
			anzeige.setIcon(bild[0]);
			setVisible(true);
			
			Random rand = new Random();
        	
        	for (int i = 0; i < 100000;  i++) 
                {
                    if(i%10000 !=0)
                    {
                    	anzeige.setIcon(bild[rand.nextInt(7)]);
                    	setVisible(true);
                    }
                }
        	anzeige.setIcon(bild[5]);
			setVisible(true);
		}		
	} //class MyActionListener

Wenn ich jetzt das Programm ausführe, zeigt es aber nur nach kurzer Zeit das bild5 an, vorher wird nichts angezeigt.
 
G

Gast2

Gast
Meinen Hinweis hast du auch ignoriert ;)

Wichtig ist hierbei, dass du die Schleife nicht auf dem EDT ausführst.

Deine Schleife läuft im Moment auf dem EDT, der also keine Zeit hat um deine Änderungen auf dem Bildschirm zu aktualisieren. => Schleife in einen extra Thread auslagern.

Java:
if(i%10000 !=0)
Nicht so schön.
Bau lieber in der Schleife ein
Code:
Thread.sleep(milliSeconds);
ein.
 

eRaaaa

Top Contributor
Oder Timer benutzen....
Aber was sollen eig. die vielen setVisibles in dem Code? Die beziehen sich doch auf den Frame und de rist doch eh schon die ganze Zeit sichtbar ? :autsch:
 

Dan1el

Mitglied
Meinen Hinweis hast du auch ignoriert ;)



Deine Schleife läuft im Moment auf dem EDT, der also keine Zeit hat um deine Änderungen auf dem Bildschirm zu aktualisieren. => Schleife in einen extra Thread auslagern.
Ups, muss ich wohl übergangen haben.

=> Schleife in einen extra Thread auslagern. --> Das heißt ich solls in eine eigene Methode schreiben?


Java:
if(i%10000 !=0)
Nicht so schön.
Bau lieber in der Schleife ein
Code:
Thread.sleep(milliSeconds);
ein.

Also muss ich grad in den Schleifenkörper Thread.sleep(milliSeconds); reinschreiben um den Bildwechsel zu verzögern?

Und hinter jedes:
anzeige.setIcon(bild[rand.nextInt(7)]);

ein:

repaint();
setzen?
 

Dan1el

Mitglied
Ich habe jetzt eine neue Methode geschrieben:

Java:
	 class MyActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{	
			anzeige.setIcon(bild[0]);
			setVisible(true);
			zufall();
			
		}		
	} //class MyActionListener
	
public void zufall()
	{
		Random rand = new Random();
        	
        	for (int i = 0; i < 5;  i++) 
            {
                try 
                {
                    Thread.sleep (1000);
                } 
                catch ( Exception ex ) 
                {
                     ex.printStackTrace();
                }
                anzeige.setIcon(bild[rand.nextInt(7)]);
                repaint();    
            }
        	anzeige.setIcon(bild[5]);
			repaint();
	}

Die Methode wird in der Klasse MyActionListener aufgerufen, leider führt sie zu dem gleichen Ergebnis wie oben: Nur das bild5 wird am Ende angezeigt
 

eRaaaa

Top Contributor
Uha, nein nein, durch eine neue Methode änderst du nichts an dem Problem!
Ein neuer Thread muss her und dann bei Änderungen an der GUI wieder zurück auf den EDT.
Leichter geht das sicherlich mit dem Swing-Timer!
(was ich aber nicht verstehe ist, du generierst ja hier wirklich Zufallszahlen, ich dachte die stehen schon fest?? Habe ich da etwas missverstanden? )

Java:
 		class MyActionListener implements ActionListener {
			public void actionPerformed(ActionEvent e) {
				javax.swing.Timer timer = new javax.swing.Timer(10000,
						new ActionListener() {
							@Override
							public void actionPerformed(ActionEvent e) {
								anzeige.setIcon(bild[rand.nextInt(7)]);
							}
						});
				timer.setInitialDelay(0);
				timer.start();
			}
		}

so in der Art(jede 10sek ein neues Bild), keine Ahnung ob sich das so schon 1:1 bei dir integrieren lässt, ansonsten --> How to Use Swing Timers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features)
 
Zuletzt bearbeitet:

Marco13

Top Contributor
*rumspiel* Mit länger werdendem Delay, damit's spannend bleibt ;) *rumspiel*

Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;

class Zufallsgenerator extends JFrame

{
    JButton start = new JButton("START");

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                String imageNames[] = new String[]{
                    "image00.png",
                    "image01.png",
                    "image02.png",
                    "image03.png",
                    "image04.png"
                };
                int lastImage = 2;

                new Zufallsgenerator(lastImage, imageNames).setVisible(true);
            }
        });

    }

    private Random random = new Random(0);
    JLabel anzeige = new JLabel();
    Icon images[];
    private int lastImage;

    public Zufallsgenerator(int lastImage, String ... imageNames)

    {
        super("Zufallsgenerator");
        setLayout(new BorderLayout());

        this.lastImage = lastImage;
        images = new Icon[imageNames.length];
        for (int i=0; i<images.length; i++)
        {
            images[i] = new ImageIcon(imageNames[i]);
        }


        JPanel panel1 = new JPanel();
        panel1.setLayout(new FlowLayout());
        JLabel textfeld = new JLabel("Zufallsgenerator");
        panel1.add(textfeld);

        JPanel panel2 = new JPanel();
        panel2.add(anzeige);
        add(panel2, BorderLayout.CENTER);

        add(panel1, BorderLayout.NORTH);
        add(start, BorderLayout.SOUTH);
        start.addActionListener(new MyActionListener());

        setSize(600, 800);
        setLocation(100, 100);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }


    class MyActionListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            Thread t = new Thread(new Runnable()
            {
                public void run()
                {
                    SwingUtilities.invokeLater(new Runnable()
                    {
                        public void run()
                        {
                            anzeige.setBorder(BorderFactory.createLineBorder(Color.RED, 5));
                        }
                    });

                    long maxDelay = 400;
                    long minDelay = 5;
                    int steps = 50;

                    int prevIndex = -1;
                    for (int i=0; i<steps; i++)
                    {
                        long delta = maxDelay-minDelay;
                        double alpha = (double)i / steps;
                        long delay = (long)(minDelay + alpha * delta);

                        int index = prevIndex;
                        while (index == prevIndex)
                        {
                            index = random.nextInt(images.length);
                        }
                        prevIndex = index;
                        final int finalIndex = index;

                        SwingUtilities.invokeLater(new Runnable()
                        {
                            public void run()
                            {
                                anzeige.setIcon(images[finalIndex]);
                                anzeige.repaint();
                            }
                        });
                        try
                        {
                            Thread.sleep(delay);
                        }
                        catch (InterruptedException e)
                        {
                            Thread.currentThread().interrupt();
                            return;
                        }

                    }

                    SwingUtilities.invokeLater(new Runnable()
                    {
                        public void run()
                        {
                            anzeige.setBorder(BorderFactory.createLineBorder(Color.GREEN, 5));
                            anzeige.setIcon(images[lastImage]);
                            anzeige.repaint();
                        }
                    });
                    System.out.println("Done");

                }
            });
            t.start();
        }
    } // class MyActionListener

}
 

Dan1el

Mitglied
hmmm ihr überfordert mich :(

Ich hab von Thread usw keine Ahnung...

Das Programm von Marco13 kann ich nicht nachvollziehen.


Also wenn du dir die Zeit nehmen willst/ kannst kann ich dir hiermit einen kurzen Überblick geben:

- Es soll insgesamt 3 Paarungen geben d.h. Es gibt 6 Lehrer die ausgewählt werden müssen.
- Der Zufallsgenerator soll also 6 mal ausgeführt werden, sodass wir die 6 Lehrer haben.

- Insgesamt stehen ca 10 Lehrerbilder zur Verfügung, die in den Zufallsgenerator eingebunden werden können/sollen.

- Ein Durchlauf soll so 5-10 Sekunden gehen und die Bilder erst schnell und zum schluss langsam durchlaufen (ist aber nicht so wichtig) lassen bis der Lehrer unserer Wahl erscheint.

Hier der aktuelle Code:

Java:
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.util.Random;

public class Zufallsgenerator extends JFrame 

{
    JLabel textfeld;
    JButton start = new JButton("START");
    String s="";
    JLabel anzeige = new JLabel();
    
    public Icon [] bild = new ImageIcon[9];
    
  
     
  public Zufallsgenerator() 
  
  {
    super("Zufallsgenerator");
    setLayout(new BorderLayout());
 
 	JPanel panel1 = new JPanel();
	panel1.setLayout(new FlowLayout());
	textfeld = new JLabel("Zufallsgenerator");
	panel1.add(textfeld);
	
	JPanel panel2 = new JPanel();
	panel2.add(anzeige);
	add(panel2,BorderLayout.CENTER);
	
	add(panel1,BorderLayout.NORTH);
	add(start,BorderLayout.SOUTH);
	start.addActionListener(new MyActionListener());
	
	
	bild[0] = new ImageIcon("bild1.jpg");
    bild[1] = new ImageIcon("bild2.jpg");
    bild[2] = new ImageIcon("bild3.jpg");
    bild[3] = new ImageIcon("bild4.jpg");
    bild[4] = new ImageIcon("bild5.jpg");
    bild[5] = new ImageIcon("bild6.jpg");
    bild[6] = new ImageIcon("bild7.jpg");
    bild[7] = new ImageIcon("bild8.jpg");
    bild[8] = new ImageIcon("bild9.jpg");
	
    setSize(600,800);
    setLocation(100,100);
    setResizable(false);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  
  public static void main(String[] args) 
  {
      new Zufallsgenerator();
      
  }
           
 class MyActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{	
			anzeige.setIcon(bild[0]);
			setVisible(true);
			zufall();
			
		}		
	} //class MyActionListener
	
public void zufall()
	{
		Random rand = new Random();
        	
        	for (int i = 0; i < 5;  i++) 
            {
                try 
                {
                    Thread.sleep (1000);
                } 
                catch ( Exception ex ) 
                {
                     ex.printStackTrace();
                }
                anzeige.setIcon(bild[rand.nextInt(7)]);
                repaint();    
            }
        	anzeige.setIcon(bild[5]);
			repaint();
	}
}
 

Dan1el

Mitglied
Habe den Fehler nun gefunden, eRaaaa hatte Recht!

==> die Schleife in einen separaten Thread auslagern, sonst bleibt der EDT blockiert bis die Schleife durchgelaufen ist und man sieht nur den letzten Zustand.

Jetzt muss ich wohl so einen Thread erzeugen...

... kann mir da jemand weiterhelfen?
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Also es ist echt schwer dir zu helfen, da du keine konkreten Fragen stellst ;/

In meinem Code (versteckt und an sich auch leichter da du dich nicht selbst mit invokeLater und dem Krams rumschlagen musst) und in Marco13`s Code werden ja Threads erstellt...
Hast du einen der Codes mal ausprobiert?

Ein Komplettcode scheint dir ja auch nicht weiter zu helfen...ist halt super schwer jetzt noch etwas dazu beizutragen (meine Meinung)
 

Dan1el

Mitglied
Ok, hier nochmal der aktuelle Programmcode:

In Zeile 61 beginnt die Problemzone:

Meine konkrete Frage dazu: Wie erstelle ich den neuen Thread und bringe somit die Bilder "in Bewegung" sodass am Ende unser Bild5 erscheint?

Java:
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.util.Random;

public class Zufallsgenerator extends JFrame 

{
    JLabel textfeld;
    JButton start = new JButton("START");
    JLabel anzeige = new JLabel();
    public Icon [] bild = new ImageIcon[9];

  public Zufallsgenerator() 
  
  {
    super("Zufallsgenerator");
    setLayout(new BorderLayout());
 
 	JPanel panel1 = new JPanel();
	panel1.setLayout(new FlowLayout());
	textfeld = new JLabel("Zufallsgenerator");
	panel1.add(textfeld);
	
	JPanel panel2 = new JPanel();
	panel2.add(anzeige);
	add(panel2,BorderLayout.CENTER);
	
	add(panel1,BorderLayout.NORTH);
	add(start,BorderLayout.SOUTH);
	start.addActionListener(new MyActionListener());
	
	
	bild[0] = new ImageIcon("bild1.jpg");
    bild[1] = new ImageIcon("bild2.jpg");
    bild[2] = new ImageIcon("bild3.jpg");
    bild[3] = new ImageIcon("bild4.jpg");
    bild[4] = new ImageIcon("bild5.jpg");
    bild[5] = new ImageIcon("bild6.jpg");
    bild[6] = new ImageIcon("bild7.jpg");
    bild[7] = new ImageIcon("bild8.jpg");
    bild[8] = new ImageIcon("bild9.jpg");
	
    setSize(600,800);
    setLocation(100,100);
    setResizable(false);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  
  public static void main(String[] args) 
  {
      new Zufallsgenerator();
      
  }
  
 /*****Problemzone:
  *  Hier unten drunter (in der Klasse MyActionListener) soll 
  *  die Schleife stehen die die verschiedenen bilder anzeigt.
  *  Das finale Bild soll bild[5] sein.
  *  Hier müsste doch dann der "Thread" reingeschrieben werden?
  *
  */         
 class MyActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{	
			anzeige.setIcon(bild[0]);
			repaint();
		}		
	} //class MyActionListener
}
 

eRaaaa

Top Contributor
Also was du da jetzt genau vor hast mit dem Random und Lehrerpaarungen checke ich immer noch nicht (werde ich wohl auch nicht mehr *g*) aber an sich geht doch mein vorher geposteter Code oder nicht? ;/

Java:
	class MyActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			timer = new Timer(1000, new ActionListener() {
				private int imageId;
				private Random r = new Random();
				@Override
				public void actionPerformed(ActionEvent e) {
					anzeige.setIcon(bild[r.nextInt(9)]);
					imageId++;
					if(imageId==6){
						anzeige.setIcon(bild[4]); //bild5
						timer.stop();
					}
				}
			});
			timer.setInitialDelay(0);
			timer.start();
		}
	} // class MyActionListener

erstmal jede Sekunde paar zufällige Bilder(das macht doch gar keinen Sinn oder ???:L) und dann am Ende wird Bild5 sichtbar...#

EDIT: Habe jetzt mal Marcos Code ausgeführt(jetzt verstehe ich auch was das werden soll *g*)..der macht doch genau das was ihr wollt oder? :autsch:
 
Zuletzt bearbeitet:

Dan1el

Mitglied
@eRaaaa: Habe deinen Code eingefügt, bekomme jetzt folgende Fehlermeldungen:

cannot find symbol variable timer ___ in Zeile: timer = new Timer(1000, new ActionListener()
cannot find symbol _______________ in Zeile: timer.stop();
cannot find symbol variable timer ___ in Zeile: timer.setInitialDelay(0);
cannot find symbol variable timer ___ in Zeile: timer.start();

heisst für mich ich muss am Anfang: import java.util.*; machen

das habe ich gemacht und nun kommt noch folgende Fehlermeldung dazu:

reference to Timer is ambiguous, both class java.util.Timer in java.util and class javax.swing.Timer match

Irgendwie läuft doch da was bei den Imports schief?
 

eRaaaa

Top Contributor
Nein oben muss [c]import javax.swing.Timer;[/c] stehen + da fehlt natürlich noch die Deklaration ....
[c]private Timer timer;[/c] (z.B. nach der Zeile JLabel textfeld; )

aber vermutlich ists eh nicht das was du suchst..Marco ist da um einiges näher dran :)
 

Dan1el

Mitglied
Wunderbar es funktioniert!

Ich hab jetzt noch an der Timerzeit rumgebastelt und eine weitere "globale" Variable eingeführt damit ich zu 6 verschiedenen ergebnissen komme.
 

Ähnliche Java Themen

Neue Themen


Oben