Action Verarbeitung im CardLayout

Code:
package Spiel;

import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI  {

	private static GUI instance = null;
	static JFrame f;
	protected static CardLayout cards;
	private JPanel menue,anleitung,info,spiel,score, spielfeld;
	Container contentPane;
	
	
	
	public GUI(){
	
	//Fenster erstellen
	f = new JFrame("Esköllator");
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	f.setIconImage(new ImageIcon("aufzugfahrt1.jpg").getImage());
	//Größe des Fensters an den Bildschirm anpassen
	Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 
	f.setSize(screen);
	
	//ContentPane in JFrame holen und Layout setzen
	contentPane = f.getContentPane();
	cards = new CardLayout();
	contentPane.setLayout(cards);
	
	//JPanels für CardLayout 
	menue = new Menue();
	anleitung = new Anleitung() ;
	spielfeld = new Spielfeld();
	info = new Info();
	spiel = new Spielfeld(); 
	//score = ;
	
	
	//Cards dem Layout zufügen
	contentPane.add(menue,"eins");
	contentPane.add(anleitung,"zwei");
	contentPane.add(info,"drei");
	contentPane.add(spiel,"vier");
	//contentPane.add(score, "fuenf");
	contentPane.add(spielfeld,"sechs");
	
	//erste Card die angezeigt werden soll
	cards.show(contentPane, "zwei");
	
		
	f.setVisible(true);
  

	}
	
public static GUI getInstance(){
		
		if(instance == null)
		instance = new GUI();
		return instance;
			
		}
	
	public void show(String string) {
		
		cards.show(contentPane,string);
	}
  }
 
Versuch es mal so.
Ich denke, dass du so irgendwo noch einen Fehler bekommst, dass soll jetzt auch so sein.

Code:
package Spiel;

import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI  {

	private static GUI instance = null;
	private static JFrame f;
	private protected static CardLayout cards;
	private JPanel menue,anleitung,info,spiel,score, spielfeld;
	private Container contentPane;
	
	
	
	private GUI(){
	
	//Fenster erstellen
	f = new JFrame("Esköllator");
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	f.setIconImage(new ImageIcon("aufzugfahrt1.jpg").getImage());
	//Größe des Fensters an den Bildschirm anpassen
	Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 
	f.setSize(screen);
	
	//ContentPane in JFrame holen und Layout setzen
	contentPane = f.getContentPane();
	cards = new CardLayout();
	contentPane.setLayout(cards);
	
	//JPanels für CardLayout 
	menue = new Menue();
	anleitung = new Anleitung() ;
	spielfeld = new Spielfeld();
	info = new Info();
	spiel = new Spielfeld(); 
	//score = ;
	
	
	//Cards dem Layout zufügen
	contentPane.add(menue,"eins");
	contentPane.add(anleitung,"zwei");
	contentPane.add(info,"drei");
	contentPane.add(spiel,"vier");
	//contentPane.add(score, "fuenf");
	contentPane.add(spielfeld,"sechs");
	
	//erste Card die angezeigt werden soll
	show("zwei");
	
		
	f.setVisible(true);
  

	}
	
public static GUI getInstance(){
		
		if(instance == null)
		instance = new GUI();
		return instance;
			
		}
	
	public void show(String string) {
		
		cards.show(contentPane,string);
	}
  }

Kopier die ganze Klasse und ersetz deine.

MFG

zEriX
 
Exception in thread "main" java.lang.Error: Unresolved compilation problem:

at Spiel.GUI.getInstance(GUI.java:63)
at Spiel.Start.main(Start.java:7)

das ist der fehler den ich zurückbekomme
 
Versuch es jetzt nochmal
Code:
package Spiel;

import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI  {

	private static GUI instance = null;
	private static JFrame f;
	private protected static CardLayout cards;
	private JPanel menue,anleitung,info,spiel,score, spielfeld;
	private Container contentPane;
	
	
	
	private GUI(){
	
	//Fenster erstellen
	f = new JFrame("Esköllator");
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	f.setIconImage(new ImageIcon("aufzugfahrt1.jpg").getImage());
	//Größe des Fensters an den Bildschirm anpassen
	Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 
	f.setSize(screen);
	
	//ContentPane in JFrame holen und Layout setzen
	contentPane = f.getContentPane();
	cards = new CardLayout();
	contentPane.setLayout(cards);
	
	//JPanels für CardLayout 
	menue = new Menue();
	anleitung = new Anleitung() ;
	spielfeld = new Spielfeld();
	info = new Info();
	spiel = new Spielfeld(); 
	//score = ;
	
	
	//Cards dem Layout zufügen
	contentPane.add(menue,"eins");
	contentPane.add(anleitung,"zwei");
	contentPane.add(info,"drei");
	contentPane.add(spiel,"vier");
	//contentPane.add(score, "fuenf");
	contentPane.add(spielfeld,"sechs");
	
	//erste Card die angezeigt werden soll
	show("zwei");
	
		
	f.setVisible(true);
  

	}
	
public static GUI getInstance(){
		
		if(instance == null){
		    instance = new GUI();
                }
		return instance;
			
		}
	
	public void show(String string) {
		
		cards.show(contentPane,string);
	}
  }
 
Exception in thread "main" java.lang.Error: Unresolved compilation problem:

at Spiel.GUI.getInstance(GUI.java:61)
at Spiel.Start.main(Start.java:7)
 
Code:
package Spiel;

import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI {

	private static GUI instance = null;

	private static JFrame f;

	private static CardLayout cards;

	private JPanel menue, anleitung, info, spiel, score, spielfeld;

	private Container contentPane;

	private GUI() {

		// Fenster erstellen
		f = new JFrame("Esköllator");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setIconImage(new ImageIcon("aufzugfahrt1.jpg").getImage());
		// Größe des Fensters an den Bildschirm anpassen
		Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
		f.setSize(screen);

		// ContentPane in JFrame holen und Layout setzen
		contentPane = f.getContentPane();
		cards = new CardLayout();
		contentPane.setLayout(cards);

		// JPanels für CardLayout
		menue = new Menue();
		anleitung = new Anleitung();
		spielfeld = new Spielfeld();
		info = new Info();
		spiel = new Spielfeld();
		// score = ;

		// Cards dem Layout zufügen
		contentPane.add(menue, "eins");
		contentPane.add(anleitung, "zwei");
		contentPane.add(info, "drei");
		contentPane.add(spiel, "vier");
		// contentPane.add(score, "fuenf");
		contentPane.add(spielfeld, "sechs");

		// erste Card die angezeigt werden soll
		show("zwei");

		f.setVisible(true);

	}

	public static GUI getInstance() {

		if (instance == null) {
			instance = new GUI();
		}
		return instance;

	}

	public void show(String string) {

		cards.show(contentPane, string);
	}
}

So sind in dieser Klasse keine Fehler mehr drin. Aber irgendwo muss bei dir noch ein rotes Kreuz sein, wenn du eclipse benutzt.

MFG

zEriX
 
DANKESCHÖÖÖÖN
ha, in der klasse sind keine fehler mehr drin, aber auch kein rotes Kreuz.
Dafür funktioniert aber der GUIListener nicht mehr ....
der wird jetzt fehlerhaft markiert und kompiliert auch nicht :confused:


Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Implicit super constructor GUI() is not visible for default constructor. Must define an explicit constructor

at Spiel.GUIListener.<init>(GUIListener.java:7)
at Spiel.Menue.<clinit>(Menue.java:32)
at Spiel.GUI.<init>(GUI.java:38)
at Spiel.GUI.getInstance(GUI.java:63)
at Spiel.Start.main(Start.java:7)



Code:
package Spiel;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class GUIListener extends GUI implements ActionListener{

	private GUI karten = GUI.getInstance();	        
	
	public void actionPerformed(ActionEvent event) {
				
		String a = event.getActionCommand();
		
		if(a.equals("neu"))
		{
			karten.show("zwei");
         }
		
	}}
 
also es wird kompiliert, die buttons funktionieren nicht und ich bekomme folgende meldung:

Exception in thread "main" java.lang.ExceptionInInitializerError
at Spiel.GUI.<init>(GUI.java:38)
at Spiel.GUI.getInstance(GUI.java:63)
at Spiel.Start.main(Start.java:7)
Caused by: java.lang.IllegalArgumentException: wrong parent for CardLayout
at java.awt.CardLayout.checkLayout(Unknown Source)
at java.awt.CardLayout.show(Unknown Source)
at Spiel.GUI.show(GUI.java:71)
at Spiel.GUI.<init>(GUI.java:54)
at Spiel.GUI.getInstance(GUI.java:63)
at Spiel.GUIListener.<init>(GUIListener.java:9)
at Spiel.Menue.<clinit>(Menue.java:32)
... 3 more
 
Der hat ein Problem in der Methode show. Irgendwas mit der contentPane wäre falsch. Änderst du die irgendwo?

Ich muss jetzt leider los. Kannst ja noch selbst danach schauen, sonst schaue ich morgen nochmal danach.

MFG

zEriX
 
Zurück