Swing Sequenz aus farbigen Quadraten in Window anzeigen

Rufus.Mueller

Bekanntes Mitglied
Ich will in einem Window zentriert ein (großes, so ca 3x3 cm) farbiges Quadrat für eine Sekunde einblenden, dann passiert eine Sekunde nichts und dann wird wieder ein Quadrat eingeblendet, diesmal in einer anderen Farbe. So sollen eine ganze Sequenz an Quadraten eingeblendet werden. Wie gehe ich am besten vor? Ich würde so vorgehen: So viele Panels nehmen wie ich Quadrate haben will, die Panels unterschiedlich einfärben und dann jeweils ein Panel immer für eine Sekunde auf setVisible(true) schalten. Was meint Ihr?
 
Zuletzt bearbeitet:

Rufus.Mueller

Bekanntes Mitglied
Ich habe folgenden Code:

Java:
	JPanel panel1 = new JPanel();
	JPanel panel2 = new JPanel();
	JPanel panel3 = new JPanel();
	JPanel panel4 = new JPanel();
	
	panel1.setBackground(Color.GREEN);
	panel2.setBackground(Color.RED);
	panel3.setBackground(Color.BLUE);
	panel4.setBackground(Color.YELLOW);

Bei der Einfärbung der Panels (zweiter Codeblock) erscheint seltsamerweise die folgende Fehlermeldung:

- Syntax error on token ".", ... expected
- Syntax error on token "setBackground", Identifier expected after
this token
 

Rufus.Mueller

Bekanntes Mitglied
Ich habe gerade in Eclipse extra noch mal ein Testprojekt angelegt, um das KSKB zu erstellen. Da kommt keine Fehlermeldung. In meinem originalen Programm aber leider schon:

Java:
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.Color;

import javax.swing.*;



public class Farbquadrate2 { 

		
	//Textfeld erzeugen
	
		public static void main(String[] args){
			
		
		final JLabel Textfeld = new JLabel("Text);
		Textfeld.setVisible(false);
		
		
		
		//Fenster erzeugen und einstellen		
			
			
		final JFrame Frame = new JFrame();
			Frame.setVisible(true);
			Frame.setTitle("Experiment 2");
			
			
			Frame.setExtendedState(Frame.MAXIMIZED_BOTH);	
		//	Frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
			Frame.setLayout(new GridBagLayout());
			


			
			
		
			
			Frame.add(Textfeld);
			
		

			
			
			
			
	//Button erzeugen und in Fenster integrieren
			
			final JButton startbutton = new JButton("2. Experiment beginnen");
			startbutton.setBounds(400,250,200,50);
				
			Frame.add(startbutton); 
			
			final JButton sequenzbutton = new JButton("Sequenz beginnen!");
			sequenzbutton.setBounds(400,250,200,50);
			sequenzbutton.setVisible(false);
				
		    Frame.add(sequenzbutton); 
			
			
			
			
	// Label mit Anweisung erzeugen
			
			
			
	////Listener implementieren und Listener an Startbutton registrieren
			
	//		Startbutton.addActionListener(ActionListener StartbuttonListener = new ActionListener());
			
			
			
			
			startbutton.addActionListener( new java.awt.event.ActionListener() {

			
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
			
					startbutton.setVisible(false);
					sequenzbutton.setVisible(true);
					Textfeld.setVisible(true);
				}
			});
		}
 

	JPanel panel1 = new JPanel();
	JPanel panel2 = new JPanel();
	JPanel panel3 = new JPanel();
	JPanel panel4 = new JPanel();
	
	panel1.setBackground(Color.GREEN);
	panel2.setBackground(Color.RED);
	panel3.setBackground(Color.BLUE);
	panel4.setBackground(Color.YELLOW);
	
	JLabel label1 = new JLabel();
	label1.setBackground(Color.GREEN); 

	
}
 

Rufus.Mueller

Bekanntes Mitglied
Interessanterweise tritt die Fehlermeldung auch dann auf, wenn ich in obig gepostetem Code alles bis auf die Importe, die Signatur der Klasse Farbquadrate und die von Dir als korrekt bezeichneten Zeilen auskommentiere.
 
C

Camino

Gast
[JAVA=18]final JLabel Textfeld = new JLabel("Text);[/code]
Fehlt da hinter "Text nur hier im Forumsbeitrag ein doppeltes Anführungszeichen, oder auch in deinem Programmcode? Ansonsten hast du ja meine Tipps aus dem anderen Posting nicht umgesetzt...
 
G

Gast2

Gast
Java:
    panel1.setBackground(Color.GREEN);
    panel2.setBackground(Color.RED);
    panel3.setBackground(Color.BLUE);
    panel4.setBackground(Color.YELLOW);
    
    JLabel label1 = new JLabel();
    label1.setBackground(Color.GREEN);
Der Code darf natürlich nicht einfach so in deiner Klasse rumfliegen.
Pack den z.b. in den Konstruktor.
 

Rufus.Mueller

Bekanntes Mitglied
Du meinst, die Objekte klein schreiben? Ich hatte es schon geändert, musste aber dann noch mal auf eine ältere Veersion des Programms zurückgreifen, da ich mich hoffnungslos verheddert hatte, gut dass Du darauf hinweist. Das Anführungszeichen ist im Original vorhanden, ich habe den Text der ÜBersicht halber zum Posten entfernt, da er ziemlich lang ist.

Ich habe jetzt mal systematisch Teile des Programms gelöscht, wenn man diesen Codeteil löscht, verschwinden die Fehlermeldungen:

Java:
startbutton.addActionListener( new java.awt.event.ActionListener() {

			
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
			
					startbutton.setVisible(false);
					sequenzbutton.setVisible(true);
					Textfeld.setVisible(true);
				}
			});
		}
 

Rufus.Mueller

Bekanntes Mitglied
Eike: Ich weiß nicht welchen Konstruktor Du meinst, ich habe doch gar keinen eigenen geschrieben?

Ich habe jetzt die Erzeugung und die Einfärbung der Panels VOR den o.g. "Störcode" gesetzt, jetzt kommt keine Fehlermeldung mehr. Komisch ist das schon, vorhin hatteich schon mal das Phänomen, dass ich Fehlermedldungen beseitigen konnte, indem ich einfach nur die Reihenfolge des Codes geändert habe. Die Übersicht wird leider nicht besser durch diese Vorgehensweise.
 
G

Gast2

Gast
Der Punkt ist, du kannst nicht irgendwelchen Code irgendwo in deine Klasse schreiben.
Der Code muss in nem Kontruktor oder einer Methode (u.a.) stehen.
 

Rufus.Mueller

Bekanntes Mitglied
Ja, ich hatte schon die ganze Zeit das Gefühl, nicht wirklich objektorientiert zu programmieren. Ich will ein Programm schreiben, das einen linearen Ablauf hat, dem Bearbeiter wird etwas angezeigt und er mutt etwas eingeben. Nachdem alle "Stationen" durchlaufen wurden, endet das Programm bzw. es wird dem Bearbeiter eine Abschlussmeldung angezeigt. Mein Problem ist, das ich nicht so recht weiß wie ich das ganze in Objekte und Klassen einteilen kann, eigentlich greife ich ja nur auf Sachen zurück dies schon gibt.
 

Michael...

Top Contributor
Ja, ich hatte schon die ganze Zeit das Gefühl, nicht wirklich objektorientiert zu programmieren.
Naja, Dir fehlen grundlegende Kenntnisse der Programmierung (in Java). Dir scheint nicht klar zu sein, wie eine Klasse aufgebaut ist. Es gibt Bereiche in denen Instanzvariablen deklariert und eventuell initialisiert werden und dann gibt es noch Konstruktoren und Methoden - nur hier können andere Methoden aufgerufen werden.
Dein Code fliegt da lose im Deklarationsteil der Klasse rum.
 

Ähnliche Java Themen

Neue Themen


Oben