Action Verarbeitung im CardLayout

aehm

Code:
public void show(Container contentPane2, String string) {
	cards.show(contentPane2,string);
so :D, dann benutzt du auch die variablen die mitgegeben wurden
 
Habe jetzt allle Namen auf contentPane abgeändert, es handelt sich ja immer um die eine aus dem CardLayout, die soll ja auch erkannt werden....

funktioniert trotzdem nicht :-(

GUI():
Code:
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(){..
        contentPane = f.getContentPane();
	cards = new CardLayout();
	contentPane.setLayout(cards);

        contentPane.add(menue,"eins");
	contentPane.add(anleitung,"zwei");
 
}

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

	public void show(Container contentPane, String zwei) {
	cards.show(contentPane,"zwei");
		
	}

GUIListener:
Code:
public class GUIListener extends GUI implements ActionListener{

	public GUI karten;	           // So  geändert !
	
	public void actionPerformed(ActionEvent event) {
				
		String a = event.getActionCommand();
		
		if(a.equals("neu"))
		{
			
			karten.show(contentPane, "zwei");
		}
 
Die show-Methode sollte bei dir so aussehen.

Code:
public void show(String string) {
	cards.show(contentPane,string);
}

Code:
public class GUIListener extends GUI implements ActionListener{

	private GUI karten = GUI.getInstance();	           // So  geändert !
	
	public void actionPerformed(ActionEvent event) {
				
		String a = event.getActionCommand();
		
		if(a.equals("neu"))
		{
			
			karten.show("zwei");
}

Die Start-Klasse sollte dann so aussehen.
Code:
public class Start {


public static void main(String[] args) {
GUI.getInstance();
}

}

Alles natürlich unter der Vorraussetzung, dass du die Klasse GUI als Singleton hast. Also so wie ich es dir gezeigt habe. Singleton ist ein Design-Pattern. Da wird sicher gestellt, dass es nur eine Instance der Klasse geben kann, da der Konstruktor privat ist.
 
Habe alles so eingefuegt wie es oben von dir aufgeschrieben steht.

Mir wird die GUI angezeigt, jedoch gleich zwei mal und die ActionListener funktioieren immer noch nicht.
Bekomme diese Fehlermeldung:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
(mit Eclipse)

hier noch mal meine aktuelle Version des ganzen....

Code:
public class Start {

	
	public static void main(String[] args) {
		GUI.getInstance();
Code:
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(){
                    ....          // CardLayout erschaffen
}
public static GUI getInstance(){
		
		if(instance == null)
		instance = new GUI();
		return instance;
			
		}
	
	public void show(String string) {
		
		cards.show(contentPane,string);
	}

Code:
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");
         }


Code:
public class Menue extends JPanel {

	static GUIListener action = new GUIListener();
	
	public Menue(){...}

JButton neuesSpiel = new JButton("Neues Spiel");
neuesSpiel.setActionCommand("neu");
neuesSpiel.addActionListener(action);
 
wenn du das am anfang von GUI() meinst ja:
Code:
public class GUI  {

	private static GUI instance = null;

das mit dem getInstance ist oublic, geht aber auch nur so:

Code:
public static GUI getInstance(){
		
		if(instance == null)
		instance = new GUI();
		return instance;

und der im GUIListener ist auch private:

Code:
private GUI karten = GUI.getInstance();

könnte dir mal meinen gesamten quellcode anhängen....
 

Neue Beiträge

Zurück