CardLayout, ausgelagerte Panels, ActionListener

quidnovi

Mitglied
Hi @ all

Trotz intensivem Bemühens von Google und Durchforsten von einschlägigen Foren, habe ich leider keine Lösung für mein Problem gefunden.
Vorausschicken möchte ich auch, dass ich Einsteiger bin.

Die Herausforderung:
CardLayout mit "ausgelagerten" Panels.
Nun möchte ich die einzelnen Panels über einen Button aufrufen,
wobei sich diese Buttons auf den jeweiligen Panels befinden.

In diesem Forum habe ich ein Beispiel aufgegriffen, welches ich zu Erweitern versuchte, aber leider gescheitert bin.

Nun der Code:
Java:
import java.awt.CardLayout;
import java.awt.event.ActionEvent;

import javax.swing.JPanel;

public class HauptPanel extends JPanel {

	 private CardLayout cardLayout;
	    
	    public HauptPanel() {
	                
	        cardLayout = new CardLayout();
	        setLayout( cardLayout );
	        
	        // Panel zum CardLayout hinzufügen
	        add( new Panel1(), "Panel1" );
	        add( new Panel2(), "Panel2" );
	        
	    }
	 
	    // Methode zeigt die gewünschte Seite (Panel) im Frame an
	    public void setCards( String cardname ) {
	        cardLayout.show( this, cardname );
	    }
	 
	}

und des Weiteren:
Java:
import java.awt.CardLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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



public class Panel1 extends JPanel {

	public Panel1() {
		
		add(new Label("Profil"));
		
		JButton btnKommAdd = new JButton("Weiter zu neue Kommission");
		btnKommAdd.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				CardLayout cardLayout = (CardLayout) ???.getLayout();
				cardLayout.show(???, "Panel2");
				
			}
			
		});
		btnKommAdd.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		add(btnKommAdd);
	}
}

Leider weiß ich jetzt nicht, wodurch ich die ??? ersetzen sollte, da fehlt mir noch das Wissen dazu.

Nun würde ich Euch bitten, mir zumindest einen Denkabstoß für die Auflösung der Fragezeichen zu geben.

Vielen Dank im Voraus
 
S

SlaterB

Gast
du brauchst die HauptPanel-Variable, die könnte das HauptPanel bei Erstellen der Unterpanel im Konstruktor übergeben,
also sich selber mitgeben, this,
die Unterpanel brauchen natürlich entsprechende Konstruktoren, müssen sich das übergebene HauptPanel merken,

zwei Zeilen müssen es dann gar nicht sein, nutze im ActionListener die vorhandere Methode:
hauptPanel.setCards("Panel2");
 

quidnovi

Mitglied
hi mod :)

thx für die Hinweise...mit diesen mach ich mich nun daran, Realitäten zu schaffen.
Im Besten Fall melde ich mich mit der Lösung...ansonsten eben früher ;)

:meld:
 

quidnovi

Mitglied
Nun hat's leider nicht geklappt :(

Ich habe die class HauptPanel wie folgt leicht abgeändert (das Übrige ist gleich geblieben):
Java:
import java.awt.CardLayout;
import javax.swing.JPanel;

public class HauptPanel extends JPanel {
....
        
        // Panel zum CardLayout hinzufügen
        add( new Panel1(null), "Panel1" );
        add( new Panel2(null), "Panel2" );
	        
	    }
	 
...
	 
	}

und Panel 1:
Java:
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Panel1 extends JPanel{

	private static final long serialVersionUID = -1187715028971282114L;
	private HauptPanel hauptPanel;

	public Panel1(final HauptPanel hauptPanel) {
		
		setBorder(javax.swing.BorderFactory.createTitledBorder("Panel 1"));
		
		JButton btnToPanel2 = new JButton("Weiter zu Panel 2");
		btnToPanel2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				
				if(e.getActionCommand().equals("Weiter zu Panel 2")){
					hauptPanel.setCards("Panel2");
				}
			}
			
		});
		btnToPanel2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		add(btnToPanel2);
	}

	/**
	 * @return the hauptPanel
	 */
	public HauptPanel getHauptPanel() {
		return hauptPanel;
	}

	/**
	 * @param hauptPanel the hauptPanel to set
	 */
	public void setHauptPanel(HauptPanel hauptPanel) {
		this.hauptPanel = hauptPanel;
	}
}

Eclipse unterringelt mir da nix mehr, doch wenn ich nun den Button "Weiter zu Panel 2" klicke,
zeigt die Objekt-Referenz offenbar auf nix...also eine NullPointerException.

Der Fehler liegt demnach immer noch in folgender Zeile:
Java:
hauptPanel.setCards("Panel2");

Leider sehe ich mich ausser Stande, dieses Problem zu lösen, weshalb ich jetzt nun nochmals um Unterstützung bitte.

Danke im Voraus
 

quidnovi

Mitglied
wow...vielen Dank für Deine Hilfe.

na, da sollte doch auch ein Einsteiger wie ich, lernen und verstehen können :)

Spitze...danke nochmals :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Von Menü: Seite zu Seite springen (CardLayout) AWT, Swing, JavaFX & SWT 8
H CardLayout beschränken AWT, Swing, JavaFX & SWT 2
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L Java- CardLayout AWT, Swing, JavaFX & SWT 10
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
A Swing CardLayout - kein Wechsel möglich AWT, Swing, JavaFX & SWT 5
J CardLayout AWT, Swing, JavaFX & SWT 3
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
padde479 LayoutManager CardLayout wechselt die Karten nicht AWT, Swing, JavaFX & SWT 5
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
F CardLayout.show() funktioniert teilweise nicht AWT, Swing, JavaFX & SWT 5
F Swing Cardlayout aufräumen AWT, Swing, JavaFX & SWT 4
U CardLayout im Applet AWT, Swing, JavaFX & SWT 4
Q CardLayout und Klassenmethodenzugriff AWT, Swing, JavaFX & SWT 11
C Swing CardLayout dynamisch erweitern AWT, Swing, JavaFX & SWT 11
H cardlayout und jscrollpane AWT, Swing, JavaFX & SWT 14
C CardLayout in BorderLayout? AWT, Swing, JavaFX & SWT 36
W Swing Probleme mit CardLayout AWT, Swing, JavaFX & SWT 28
D JMenuBar - CardLayout (Klasse anzeigen) AWT, Swing, JavaFX & SWT 3
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
S LayoutManager Card des CardLayout mit MenuItem auswaehlen AWT, Swing, JavaFX & SWT 9
B RootPane bzw CardLayout Transparent machen AWT, Swing, JavaFX & SWT 7
L CardLayout - Show klappt nicht AWT, Swing, JavaFX & SWT 7
D Richtige implimentierung eines CardLayout AWT, Swing, JavaFX & SWT 3
P CardLayout - Anzeigeproblem AWT, Swing, JavaFX & SWT 2
I LayoutManager CardLayout mit anonymen Components AWT, Swing, JavaFX & SWT 4
Private Void LayoutManager Cardwechsel im CardLayout auch von Card aus? AWT, Swing, JavaFX & SWT 6
E LayoutManager Erster Versuch mit Cardlayout AWT, Swing, JavaFX & SWT 2
hdi LayoutManager Problem mit CardLayout AWT, Swing, JavaFX & SWT 11
C Problem mit CardLayout :( AWT, Swing, JavaFX & SWT 10
Dragonfire Swing CardLayout Maximum Size AWT, Swing, JavaFX & SWT 7
klattiator CardLayout - Cards auf Existenz prüfen AWT, Swing, JavaFX & SWT 3
S Frage/Problem CardLayout AWT, Swing, JavaFX & SWT 2
H CardLayout - Card erstellen hinzufügen usw. bis MI (12.3.) AWT, Swing, JavaFX & SWT 2
F CardLayout.show() -> NullPointerException AWT, Swing, JavaFX & SWT 4
G CARDLAYOUT AWT, Swing, JavaFX & SWT 2
D GroupLayout an un plötzlich is CardLayout Funktion tot? AWT, Swing, JavaFX & SWT 10
J CardLayout AWT, Swing, JavaFX & SWT 10
J CardLayout AWT, Swing, JavaFX & SWT 2
J Hilfe CardLayout AWT, Swing, JavaFX & SWT 3
H Cardlayout AWT, Swing, JavaFX & SWT 3
M CardLayout: Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Dialogfenster wird nicht aktualisiert/CardLayout AWT, Swing, JavaFX & SWT 6
m@nu StackOverflowError mit CardLayout? AWT, Swing, JavaFX & SWT 2
R CardLayout bei einem Quiz AWT, Swing, JavaFX & SWT 9
J Designfehler beim CardLayout() AWT, Swing, JavaFX & SWT 4
S Registerkarte mit CardLayout (AWT) erstellen ? AWT, Swing, JavaFX & SWT 6
D CardLayout Plus ? AWT, Swing, JavaFX & SWT 4
T CardLayout Ohne Cards/Reiter AWT, Swing, JavaFX & SWT 2
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
I GUI, das verschiedene Panels hat (Von Seite zu Seite navigieren) AWT, Swing, JavaFX & SWT 7
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L Swing Panels bewegen wie Windows 10 Kacheln AWT, Swing, JavaFX & SWT 0
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
T Swing Bug: mehrfache Panels bei Mouseover? AWT, Swing, JavaFX & SWT 11
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
K Event Handling Über JMenuBar die diversen Panels anzeigen AWT, Swing, JavaFX & SWT 10
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
R Swing panels nebeneinander mit BoxLayout.X_AXIS AWT, Swing, JavaFX & SWT 4
P Swing Panels Wechseln AWT, Swing, JavaFX & SWT 9
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
V AWT Panels überlappen AWT, Swing, JavaFX & SWT 1
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
U Swing Panels im Contentpane durchschalten AWT, Swing, JavaFX & SWT 1
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
S Swing Plätze von 2 panels vertauschen AWT, Swing, JavaFX & SWT 4
T Panels mit Button verbinden AWT, Swing, JavaFX & SWT 3
F Swing Wie verwalte ich meine Panels richtig? AWT, Swing, JavaFX & SWT 2
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
D Stapelung von Panels AWT, Swing, JavaFX & SWT 6
V Swing MouseEvents bei gestapelten Panels AWT, Swing, JavaFX & SWT 2
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
kodela Teil eines Panels als Graphik speichern AWT, Swing, JavaFX & SWT 3
Kenan89 LayoutManager MigLayout Positionierung von Panels AWT, Swing, JavaFX & SWT 4
A Panels in JavaFX zur Laufzeit erzeugen AWT, Swing, JavaFX & SWT 5
D JButton-Click in JList mit Panels (auf dem der Button ist) AWT, Swing, JavaFX & SWT 6
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
J Problem mit der Höhe eines Panels AWT, Swing, JavaFX & SWT 11
M Swing JTabbedPane Panels deaktivieren AWT, Swing, JavaFX & SWT 2
S Swing (Nicht) Vergrößern von Panels AWT, Swing, JavaFX & SWT 3
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
B LayoutManager Zeilenweise Anordnung von Panels AWT, Swing, JavaFX & SWT 19
B Panels wechseln auf Knopfdruck AWT, Swing, JavaFX & SWT 17
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
J LayoutManager Panels übereinander AWT, Swing, JavaFX & SWT 3
P Von einem Panel auf die Objekte des anderen Panels zugreifen AWT, Swing, JavaFX & SWT 3
C Aufklappbare Panels AWT, Swing, JavaFX & SWT 2
D Panels Dynamisch zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben