2 Frames Farbwahl durch Buttons

Status
Nicht offen für weitere Antworten.

Chucky

Aktives Mitglied
Hallo,
habe mich jetzt lange Zeit mit AWT beschäftigt und wollt jetzt mal bissl SWING dazu lernen.
Als Aufgabe hatte ich mir gesetzt 2 Frames zu erzeugen. Der eine Hauptframe sollte Buttons
enthalten mit denen man die Hintergrundfarbe des Nebenframes steuern kann.

Nun stehe ich aber dem Problem, dass er meinen Nebenframe in der Ereignisbehandlungsmethode meiner Buttons
nicht erkennt. Komme an dieser Stelle nicht weiter, weiss aber das dieses Problem nichts mit Swing zu tun hat :lol:

Wäre nett wenn ihr mir weiterhelfen könntet.

Hier der Code:

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

public class Swingprobe extends JFrame{
	
	JButton rot;
	JButton grün;
	JButton blau;
	JButton gelb;
	JButton grau;
	static Nebenfenster secondwind;
	
	AktionenLauscher hoerzu=new AktionenLauscher();
	
	public Swingprobe(){
		
		setTitle("Farbwahl");
		getContentPane().setBackground(Color.BLUE);
		
		rot=new JButton("Rot");
		grün=new JButton("Grün");
		blau=new JButton("Blau");
		gelb=new JButton("Gelb");
		grau=new JButton("Grau");
		
		rot.addActionListener(hoerzu);
		grün.addActionListener(hoerzu);
		blau.addActionListener(hoerzu);
		gelb.addActionListener(hoerzu);
		grau.addActionListener(hoerzu);
		
		getContentPane().add(rot);
		getContentPane().add(grün);
		getContentPane().add(blau);
		getContentPane().add(gelb);
		getContentPane().add(grau);
		
		setLayout(new FlowLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	public static void main(String args[]){
		
		Swingprobe hauptfenster=new Swingprobe();
		hauptfenster.setSize(200,200);
		hauptfenster.setLocation(0,0);
		hauptfenster.setVisible(true);
		
		
		secondwind=new Nebenfenster();
		secondwind.setSize(200,200);
		secondwind.setLocation(200,200);
		secondwind.setVisible(true);
		
	}
}

class Nebenfenster extends JFrame{	
	public Nebenfenster(){
		setTitle("Farbscreen");
		getContentPane().setBackground(Color.WHITE);
	}
}

class AktionenLauscher implements ActionListener{
	public void actionPerformed(ActionEvent e){
		String s=e.getActionCommand();
		if(s=="Rot")
			secondwind.getContentPane().setBackground(Color.RED);
			//weitere Farben folgen
	}
}


Und hier die Fehlerbeschreibung laut Eclipse:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
	secondwind cannot be resolved

	at AktionenLauscher.actionPerformed(Swingprobe.java:71)

Bin gerne für ALLE Verbesserungsvorschläge offen.

Vielen Dank schonmal Bob
 

Reality

Top Contributor
Es muss so heissen:

Code:
public void actionPerformed(ActionEvent e){
      Object o = e.getSource();
      if(o == rot)
         secondwind.getContentPane().setBackground(Color.RED);
         //weitere Farben folgen
   }

Liebe Grüße
Reality
 

Chucky

Aktives Mitglied
Hm funktioniert leider auch nicht aber ist doch auch egal ob ich
jetzt per e.getSource (Objekt) oder e.getActionCommand (Aufschrift des Buttons)vergleiche oder? :/

Mfg Bob
 
R

Roar

Gast
BobMarley hat gesagt.:
Hm funktioniert leider auch nicht aber ist doch auch egal ob ich
jetzt per e.getSource (Objekt) oder e.getActionCommand (Aufschrift des Buttons)vergleiche oder? :/

Mfg Bob
ja, eigentlich schon, nur wird dein vergleich auf == "rot" immer false ergeben (s. FAQ) und warum ist secondwind statisch? initialisiere es im konstruktor von Swingprobe
 

Chucky

Aktives Mitglied
Wie gewünscht geändert:

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

public class Swingprobe extends JFrame{
	
	JButton rot;
	JButton grün;
	JButton blau;
	JButton gelb;
	JButton grau;
	
	AktionenLauscher hoerzu=new AktionenLauscher();
	
	public Swingprobe(){
		Nebenfenster secondwind;
		secondwind=new Nebenfenster();
		secondwind.setSize(200,200);
		secondwind.setLocation(200,200);
		secondwind.setVisible(true);
		
		setTitle("Farbwahl");
		getContentPane().setBackground(Color.BLUE);
		
		rot=new JButton("Rot");
		grün=new JButton("Grün");
		blau=new JButton("Blau");
		gelb=new JButton("Gelb");
		grau=new JButton("Grau");
		
		rot.addActionListener(hoerzu);
		grün.addActionListener(hoerzu);
		blau.addActionListener(hoerzu);
		gelb.addActionListener(hoerzu);
		grau.addActionListener(hoerzu);
		
		getContentPane().add(rot);
		getContentPane().add(grün);
		getContentPane().add(blau);
		getContentPane().add(gelb);
		getContentPane().add(grau);
		
		setLayout(new FlowLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	public static void main(String args[]){
		
		Swingprobe hauptfenster=new Swingprobe();
		hauptfenster.setSize(200,200);
		hauptfenster.setLocation(0,0);
		hauptfenster.setVisible(true);

		
	}
}

class Nebenfenster extends JFrame{	
	public Nebenfenster(){
		setTitle("Farbscreen");
		getContentPane().setBackground(Color.WHITE);
	}
}

class AktionenLauscher implements ActionListener{
	public void actionPerformed(ActionEvent e){
		Object s=e.getSource();
		if(s==rot)
			secondwind.getContentPane().setBackground(Color.RED);
			//weitere Farben folgen
	}
}

Fehlermeldung immernoch "secondwind cannot be resolved"
und dazu auch noch "rot cannot be resolved" (auch in der Klasse AktionenLauscher)

Code:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems: 
	rot cannot be resolved
	secondwind cannot be resolved

	at AktionenLauscher.actionPerformed(Swingprobe.java:69)


Mfg Bob
 

Reality

Top Contributor
Ahh! Du musst auch nicht die Fehler kopieren, die ich mache. :D

Code:
Object s=e.getSource();
      if(o==rot)
         secondwind.getContentPane().setBackground(Color.RED);
         //weitere Farben folgen
   }

Also die Variable o und nicht s vergleichen!

Liebe Grüße
Reality
 

Chucky

Aktives Mitglied
Jetzt machst du ein Object s
und vergleichst mit o???????

:bahnhof:

Wenn du das meinst:

Code:
public void actionPerformed(ActionEvent e){
		Object s=e.getSource();
		if(s==rot)
			secondwind.getContentPane().setBackground(Color.RED);
			//weitere Farben folgen
	}

funktioniert nicht :(

Bob
 

Reality

Top Contributor
Ups. hab das mit meinem Quellcode und deinem verwechselt.
Ich kompiliert mal und schau nach.
Bis gleich
 

Reality

Top Contributor
So:
Entweder du machst eine innere Klasse oder du machst die Variablen static und greifst dann darauf zu.

Ich habe die innere Klasse genommen:

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

public class Swingprobe extends JFrame{

   JButton rot;
   JButton grün;
   JButton blau;
   JButton gelb;
   JButton grau;

   AktionenLauscher hoerzu=new AktionenLauscher();
   Nebenfenster secondwind;
   
   public Swingprobe(){
      
      secondwind=new Nebenfenster();
      secondwind.setSize(200,200);
      secondwind.setLocation(200,200);
      secondwind.setVisible(true);

      setTitle("Farbwahl");
      getContentPane().setBackground(Color.BLUE);

      rot=new JButton("Rot");
      grün=new JButton("Grün");
      blau=new JButton("Blau");
      gelb=new JButton("Gelb");
      grau=new JButton("Grau");

      rot.addActionListener(hoerzu);
      grün.addActionListener(hoerzu);
      blau.addActionListener(hoerzu);
      gelb.addActionListener(hoerzu);
      grau.addActionListener(hoerzu);

      getContentPane().add(rot);
      getContentPane().add(grün);
      getContentPane().add(blau);
      getContentPane().add(gelb);
      getContentPane().add(grau);

      setLayout(new FlowLayout());
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   }

   public static void main(String args[]){

      Swingprobe hauptfenster=new Swingprobe();
      hauptfenster.setSize(200,200);
      hauptfenster.setLocation(0,0);
      hauptfenster.setVisible(true);


   }
   class Nebenfenster extends JFrame{   
   public Nebenfenster(){
      setTitle("Farbscreen");
      getContentPane().setBackground(Color.WHITE);
   }
}

class AktionenLauscher implements ActionListener{
   public void actionPerformed(ActionEvent e){
      Object o = e.getSource();
      if(o == rot)
         secondwind.getContentPane().setBackground(Color.RED);
         //weitere Farben folgen
   }
}

}

Liebe Grüße
Reality
 
G

Guest

Gast
Und ich hatte es doch oben mit der static deklaration versucht.
Was war denn daran falsch?

Mfg Bob
 

Reality

Top Contributor
static ist nur erwünscht, wenn du willst, dass für alle Instanzen derselbe Variablen-Wert vorliegt; ansonsten kommt es zu Problemen.

Liebe Grüße
Reality
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Interface 2 von einander unabhängige Frames mit Panel gleichzeitig nutzen Java Basics - Anfänger-Themen 66
I In der Mitte eines Frames mit BorderLayout etwas malen Java Basics - Anfänger-Themen 7
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S Position eines Frames Java Basics - Anfänger-Themen 3
S Frames Verbinden Java Basics - Anfänger-Themen 19
S Auf eine variable/objekt eines frames zugrifen Java Basics - Anfänger-Themen 22
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
U [Problem] Handling multiple frames Java Basics - Anfänger-Themen 5
G Aufrufen eines Frames aus einer anderen Klasse Java Basics - Anfänger-Themen 6
A Intelligente Anordnung von Frames in einer Fläche Java Basics - Anfänger-Themen 4
D Compiler-Fehler Frames verbinden Java Basics - Anfänger-Themen 6
S Mehrere Frames Java Basics - Anfänger-Themen 4
D JMenuBar und Hintergrund eines Frames Java Basics - Anfänger-Themen 2
M Zwei Frames ein ActionListener Java Basics - Anfänger-Themen 21
K Schließen eines Frames Java Basics - Anfänger-Themen 4
G Java-Frames funktionieren nach Neuinstallation nicht mehr. Java Basics - Anfänger-Themen 3
S Frames schließen Java Basics - Anfänger-Themen 14
D Sound in Frames möglich? EDIT Class Clip Java Basics - Anfänger-Themen 5
V Wie auf Elemente des Frames zugreifen Java Basics - Anfänger-Themen 4
A frames layout Java Basics - Anfänger-Themen 4
Z frames Java Basics - Anfänger-Themen 3
G Frames unabhänig schliessen. Java Basics - Anfänger-Themen 2
G Ist es möglich, den 'Rahmen' eines Frames durch Grafiken. Java Basics - Anfänger-Themen 5
G Liste in mehreren unabhängigen Frames aktualisieren. Java Basics - Anfänger-Themen 6
V Aufruf eines Frames Java Basics - Anfänger-Themen 6
H 3 buttons in 3-spalten eines frames Java Basics - Anfänger-Themen 3
E Farbänderung des Frames bei Klick . Java Basics - Anfänger-Themen 7
B Analoguhr und openTime eines Frames Java Basics - Anfänger-Themen 6
G Applets in Frames & Bilder Java Basics - Anfänger-Themen 10
P Beide frames werden geschlossen Java Basics - Anfänger-Themen 2
M Infernal Frames Java Basics - Anfänger-Themen 4
G mehrere Frames nacheinander aktualisieren Java Basics - Anfänger-Themen 2
G Methode zum schliessen eines frames - nicht durch windows X Java Basics - Anfänger-Themen 14
D Menü soll immer da bleiben - Frames sollen wechseln Java Basics - Anfänger-Themen 3
P Frage zu Frames: Fenster sichtbar, unsichtbar machen Java Basics - Anfänger-Themen 1
G Frames Java Basics - Anfänger-Themen 4
M 2 Frames Java Basics - Anfänger-Themen 16
M Daten zwischen Frames austauschen Java Basics - Anfänger-Themen 2
G Frames mit einander verbinden Java Basics - Anfänger-Themen 10
M 2 frames separat schliessen Java Basics - Anfänger-Themen 22
D Frage zu Frames! Java Basics - Anfänger-Themen 9
S Zwei Frames miteinander verbinden Java Basics - Anfänger-Themen 5
Q Kommunikation zwischen Frames Java Basics - Anfänger-Themen 3
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
F Methode für Teilbarkeit durch 5 tut was anderes.... Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
H Wie kann ich durch Methoden definiren? Java Basics - Anfänger-Themen 8
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
O Typparameter durch Wildcards verallgemeinern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben