Timer - Swing

J

james234

Gast
Hallo!

Ich versuche gerade ein Programm zu schreiben, das jede 500ms die Farbe des Fensters wechselt.

Ich mache das mit einem Swing-Timer, dieser löste bei 500ms ein ActionEvent aus. Ich verstehe nicht, warum das nicht funktioniert was ich da fabriziert habe.

Ich meine wenn der rein geht in das Actionevent schaut er ob der Hintergrund rot oder grün ist, wenn er grün ist macht er auf rot und umgekehrt? Müsste doch eigentlich funktionieren?

Oder muss ich da was mit setDelay machen? Mit funktioniert es aber auch nicht. Bitte helft mir auf die Sprünge.

Danke!

mfg James

Hier der Code:
Java:
public class MainFrame extends JFrame {
  private JPanel contentPane;
 // private JButton button1;
 // private JButton button2;
  private Timer timer1;
//  private JPanel panel1;
  
  public MainFrame() {
    try {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      FrameInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void FrameInit() throws Exception {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(new BorderLayout());
    setSize(new Dimension(400, 300));
    setTitle("Frame Title"); 
    
    //Timer(int delay, ActionListener listener);
    
    //timer1 = new Timer(500, timer1_ActionListener);
    
    contentPane.setBackground(Color.GREEN);
    
    timer1 = new Timer(500, new timer1_ActionListener());
    
    timer1.addActionListener(new timer1_ActionListener());
    

    timer1.start();
    
  
  }
  
  private class timer1_ActionListener implements ActionListener {
	  public void actionPerformed(ActionEvent ae) {
			
		 // System.out.println("asdf");
		
		  if(contentPane.getBackground() == Color.GREEN)
		  {
			  contentPane.setBackground(Color.RED);
                          timer1.setDelay(500);
		  }
		  else
		  {
			  contentPane.setBackground(Color.GREEN);
                          timer1.setDelay(500);
		  }
		  
		 
		} 
  }		
}
 
D

DerBo

Gast
Du musst das Fenster auch neu Zeichnen lassen, wenn du den Background geändert hast.
Außerdem würde ich den Background nur mit einem Thread in der EventQueue ändern und neu zeichnen lassen,
Gruß
 

eRaaaa

Top Contributor
Lasse mal Zeile 37 weg (sonst wird der Listener zwei mal schnell hintereinander ausgeführt, daher siehst du keinen Wechsel). 53 und 58 können auch weg oder?!

@DerBo: repaint() sollte automatisch aufgerufen werden eig.! Ist also nicht nötig
 
J

James234

Gast
Ok, stimmt danke euch :)!

Also die eigentliche Übung ist, dass ich eine so Art Reaktionstester machen soll. D.h. ich erstelle 2 Buttons, einen grünen und einen roten. Wenn der Hintergrund Rot ist und ich auf den roten drücken, dann soll eine variable inkrementiert werden, dasselbe dann mit Falsch gedrückt und mit nicht gedrückt.

Mein Problem ist aber wenn ich in einer Klasse raufzähle, kann ich dann in der anderen Klasse nicht auf diese Variable zugreifen.

Bitte gebt mir wieder paar Tipps dazu. Was könnte ich da andersmachen. Ja, ich hab mir das Java-Buch durchgelesen, aber irgendwie weis nicht, steh ich auf der Leitung und hab keine Ahnung wie ich mein Problem lösen kann.

Kann mir das einer erklären bitte?

Danke!

Hier der bis jetztige Code:
Java:
package Reaktionstester;

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

public class MainFrame extends JFrame {
  private JPanel contentPane;
  private JButton button_red;
  private JButton button_green;
  private Timer timer1;
  private JPanel panel1;
  private int zaehler_false = 0;
  private int zaehler_richtig = 0;
  private int zaehler_widh = 0;
  
  public MainFrame() {
    try {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      FrameInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void FrameInit() throws Exception {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(new BorderLayout());
    setSize(new Dimension(400, 300));
    setTitle("Frame Title"); 

    
    panel1 = new JPanel();
    panel1.setLayout(new FlowLayout());
    panel1.setBackground(Color.RED);
    
    button_red = new JButton("red");
    button_red.setBackground(Color.RED);
    button_red.addActionListener(new ButtonRed_ActionListener());
    button_green = new JButton("green");
    button_green.setBackground(Color.GREEN);
    button_green.addActionListener(new ButtonGreen_ActionListener());
    
    panel1.add(button_red, BorderLayout.CENTER);
    panel1.add(button_green, BorderLayout.CENTER);
  
    contentPane.add(panel1, BorderLayout.CENTER);
    
    timer1 = new Timer(500, new timer1_ActionListener());
   
    timer1.start();
    
   
  }
  
  private class ButtonRed_ActionListener implements ActionListener {
	 
	  public void actionPerformed(ActionEvent ae) {
	
		  if(panel1.getBackground() == Color.red)
		  {
			  zaehler_false++;
		  }
		  else
		  {
			  zaehler_richtig++;
		  }
		 
	  }
  }
  
  private class ButtonGreen_ActionListener implements ActionListener {
	  public void actionPerformed(ActionEvent ae) {
		  
		  if(panel1.getBackground() == Color.green)
		  {
			  zaehler_false++;
		  }
		  else
		  {
			  zaehler_richtig++;
		  }
		 
	  }
  }
  
  private class timer1_ActionListener implements ActionListener {
	  public void actionPerformed(ActionEvent ae) {
			
		
		  if(panel1.getBackground() == Color.GREEN)
		  {
			  panel1.setBackground(Color.RED);
		  }
		  else
		  {
			  panel1.setBackground(Color.GREEN);
		  }
		  zaehler_widh++;
		  
		  if(zaehler_widh == 20)
		  {
		    	timer1.stop();
		    	System.out.println("Falsch:" + zaehler_false);
		    	System.out.println("Richtig:" + zaehler_richtig);
		  }    
		 
		} 
  }		
}
 
J

james1234

Gast
Bitte, ich stehe an. Ich lese mir die doc durch etc., aber ich kappiers einfach nicht. Helft mir doch pls :).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Swing Timer Java Basics - Anfänger-Themen 3
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
Luk10 Swing timer und Threads Java Basics - Anfänger-Themen 4
kulturfenster Problem mit javax.swing.Timer Java Basics - Anfänger-Themen 2
L Timer Swing realisieren Java Basics - Anfänger-Themen 4
S Timer vs ExecutorService: jeden Sonntag um 14.00 Uhr einen Task starten..? Java Basics - Anfänger-Themen 1
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
Jan_x8 Timer/Scanner Java Basics - Anfänger-Themen 5
C Timer aktualisieren Java Basics - Anfänger-Themen 5
L GUI- wie cancel ich einen Timer? Java Basics - Anfänger-Themen 10
missy72 Timer oder Timeline Java Basics - Anfänger-Themen 3
R Timer Format: 00:00:00 Java Basics - Anfänger-Themen 29
C java.util Timer läuft zu langsam? Java Basics - Anfänger-Themen 1
D Änder der Timer Speeds Java Basics - Anfänger-Themen 1
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
L Methoden Timer Java Basics - Anfänger-Themen 9
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
G Animation Timer Nano Time Java Basics - Anfänger-Themen 2
S Timer reseten Java Basics - Anfänger-Themen 3
T Timer stoppt zu früh Java Basics - Anfänger-Themen 7
CptK Methoden Timer & Mathematischer Denkfehler Java Basics - Anfänger-Themen 7
C Wie erstellt man einen Timer/Delay? Java Basics - Anfänger-Themen 1
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
D Timer programmieren Java Basics - Anfänger-Themen 13
N Timer funktioniert nicht beim starten Java Basics - Anfänger-Themen 3
B Timer mehrere Male ausführen Java Basics - Anfänger-Themen 4
J Timer richtig pausieren Java Basics - Anfänger-Themen 2
E Timer erstellen Java Basics - Anfänger-Themen 2
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
S actionlistener timer Java Basics - Anfänger-Themen 9
C Wie kann ich jetzt von der Game.java auf die Timer.java zugreifen? Java Basics - Anfänger-Themen 6
S timer mit imagedatei Java Basics - Anfänger-Themen 5
S timer Java Basics - Anfänger-Themen 0
V Java Uitil Timer Stoppt nicht Java Basics - Anfänger-Themen 2
KaffeeFan Timer beenden Java Basics - Anfänger-Themen 12
K Ampelsteuerung mit Timer Java Basics - Anfänger-Themen 8
F Array und Timer Java Basics - Anfänger-Themen 2
G Timer einsetzen Java Basics - Anfänger-Themen 2
J Timer oder Thread programmieren ? Java Basics - Anfänger-Themen 10
F Timer beendet nicht immer Java Basics - Anfänger-Themen 2
F Timer abbrechen und wieder starten Java Basics - Anfänger-Themen 5
W Erste Schritte Timer soll jede Sekunde Label aktualisieren Java Basics - Anfänger-Themen 5
T Timer - HILFE Java Basics - Anfänger-Themen 10
A Wieso funktioniert dieser Timer nicht?? Java Basics - Anfänger-Themen 3
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
O Starte Timer, während anderer Timer noch läuft. Ruft dies Schwierigkeiten hervor? Java Basics - Anfänger-Themen 0
M Schneller Timer Java Basics - Anfänger-Themen 2
C Timer aus anderer Klasse stoppen/starten Java Basics - Anfänger-Themen 3
B Timer beenden? Java Basics - Anfänger-Themen 0
G Erste Schritte Timer: In einem festgelegten Intervall eine Methode ausführen Java Basics - Anfänger-Themen 6
O Delayed Timer erstellen Java Basics - Anfänger-Themen 3
M Timer / Thread Java Basics - Anfänger-Themen 43
A Timer: textarea.getText() mit Variable vergleichen Java Basics - Anfänger-Themen 3
D Problem mit Methode und Timer Java Basics - Anfänger-Themen 35
T Wie mache ich einen Timer der alle 2 sekunden aufgerufen wird? Java Basics - Anfänger-Themen 5
R Einfacher Timer geht nicht Java Basics - Anfänger-Themen 7
M Einfacher Timer ;) Java Basics - Anfänger-Themen 15
M Timer für Termial-Eingaben Java Basics - Anfänger-Themen 3
C Methoden Einen Timer einbauen, aber wie? Java Basics - Anfänger-Themen 5
B Timer Java Basics - Anfänger-Themen 25
S Timer / Schleifen Verständnis Problem Java Basics - Anfänger-Themen 3
S Erste Schritte Java Timer Java Basics - Anfänger-Themen 13
E Threads Timer Java Basics - Anfänger-Themen 6
Spin KI Anfänger Frage : Timer Problem Java Basics - Anfänger-Themen 6
F Prüfen ob timer läuft Java Basics - Anfänger-Themen 6
L Erste Schritte Timer und Zugriffsattribute Java Basics - Anfänger-Themen 5
M Audio + Timer Java Basics - Anfänger-Themen 12
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
R Klassen MemorySpiel: brauche Timer Java Basics - Anfänger-Themen 3
D Timer in Applet Java Basics - Anfänger-Themen 2
ruerob Warum ist Timer schneller als While? Java Basics - Anfänger-Themen 9
F Java Timer Frage Java Basics - Anfänger-Themen 14
VfL_Freak Verständnisfrage zur Klasse "TIMER" Java Basics - Anfänger-Themen 7
B Timer Java Basics - Anfänger-Themen 2
S timer task problem Java Basics - Anfänger-Themen 2
C Überprüfen, ob Timer läuft Java Basics - Anfänger-Themen 3
S "Kleines" Problem mit dem Timer Java Basics - Anfänger-Themen 4
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
W Timer erstellen Java Basics - Anfänger-Themen 2
M Timer: period während Verlauf wechseln Java Basics - Anfänger-Themen 12
M Timer unterbrechen? Wo ist mein Thread? Java Basics - Anfänger-Themen 2
L Timer innerhalb eines Threads Java Basics - Anfänger-Themen 3
P Java Timer Java Basics - Anfänger-Themen 2
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
B problem mit timer/timertask, Farbverlauf Java Basics - Anfänger-Themen 10
Piwi Timer bei Programmende beenden Java Basics - Anfänger-Themen 25
T zweiter Timer überschreibt den ersten Timer ? Java Basics - Anfänger-Themen 5
C Regelmäßigen Timer bei Zeitüberschreitung nacheinander abarbeiten Java Basics - Anfänger-Themen 2
J timer Java Basics - Anfänger-Themen 2
J timer Java Basics - Anfänger-Themen 2
H Timer Java Basics - Anfänger-Themen 3
dl85hej Zeitsitschleife anstatt Timer Java Basics - Anfänger-Themen 5
G Klasse mit Timer nicht beenden Java Basics - Anfänger-Themen 6
S Timer / TimerTask Frage Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben