CardLayout

Na_dine

Mitglied
Hallo,
fuer meine Applikation brauche ich unbedingt ein CardLayout und habe mich in einem ersten Versuch daran probiert, bevor ich alles auf meine applikation anwende. Leider funktioniert es noch nicht so wie ich moechte, bekomme aber auch keine fehlermeldung vom Compiler. Hat vielleicht jemand von euch eine Idee?
hier mal mein QuellCode:

public class ErstesFenster

private CardLayout seiten;
Container cP;
ActionListener klick;
JButton zwi, knopf;

public static void main(String[]args) (

ActionListener klick = new ErstesFenster();
JFrame fenster = new JFrame();

CardLayout seiten = new CardLayout(5,5);

Container cP = new fenster.getContenPane();
cP.setLayout(seiten);

JPanel untergrund = new JPanel();
JButton knopf = new JButton("druck");
knopf.addActionListener(klick);
untergrund.add(knopf);

JPanel zwei = new JPanel();
JButton zwi = new JButton("zuck");
zwi.addActionListener(klick);
zwei.add(zwi);

cP.add(zwei,"eins");
cP.add(untergrund,"zwei");

seiten.show(cP,"zwei");

fenster.setVisible(true);
)

public void actionPerformed(ActionEvent event) (
if(event.getSource().equals(knopf))
(
seiten.show(cP,"eins");
)

if(event.getSource().equals(zwi))
(
seiten.show(cP,"zwei");
)
 
Hallo,

du hast ja auch den Fehler gemacht, dass du alle Variablen die du über der main-Methode anlegst gar nicht benutzt. Du legst in der main-Methode Variablen mit dem gleichen Namen an und benutzt diese.
Außer im ActionListener, da benutzt du die Klassen-Variablen, die aber immer noch null sind.

Java:
package de.tutorials.tmp;

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ErstesFenster implements ActionListener {
	private static CardLayout seiten;

	static Container cP;

	static JButton zwi, knopf;

	public static void main(String[] args) {

		ActionListener klick = new ErstesFenster();
		JFrame fenster = new JFrame();
		fenster.setSize(300, 300);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		seiten = new CardLayout(5, 5);

		cP = fenster.getContentPane();
		cP.setLayout(seiten);

		JPanel untergrund = new JPanel();
		knopf = new JButton("druck");
		knopf.addActionListener(klick);
		untergrund.add(knopf);

		JPanel zwei = new JPanel();
		zwi = new JButton("zuck");
		zwi.addActionListener(klick);
		zwei.add(zwi);

		cP.add(zwei, "eins");
		cP.add(untergrund, "zwei");

		seiten.show(cP, "zwei");
		fenster.setVisible(true);
	}

	public void actionPerformed(ActionEvent event) {
		if (event.getSource().equals(knopf)) {
			seiten.show(cP, "eins");
		}

		if (event.getSource().equals(zwi)) {
			seiten.show(cP, "zwei");
		}
	}
}

MFG

zEriX
 
Hallo,
danke fuer die Hilfe, das CardLayout funktioniert soweit.
Leider nur solange ich alle Panels die ich anzeigen moechte in derselben Klasse habe.

Ich habe fuer jede Karte im CardLayput eine eigene Klassen erstellt.
Kann mir jemand einen Tipp geben, wie ich nun die Klassen mit den Card-Inhalten in meine urspruengliche Klasse mit dem CardLayout bekomme und sie dort als Components dem Layout hinzufuegen kann? Ich stehe da grad ein bisschen aufm Schlauch :confused:

Ich hatte gedacht vielleicht einfach so:
(Hauptmenue ist eine Klasse fuer eine Card, hier moechte ich sie gerne der cP(ContentPane im CardLayout zufuegen)
Code:
Hauptmenue Hauptmenue = new Hauptmenue();

cP.add(Hauptmenue,"eins");

vielen dank fuer jede Hilfe
LG, Nadine
 
Zurück