Problem mit JPanel und CardLayout

Sieht auf den ersten Blick okay aus..
bist du sicher das die jeweiligen If- Bedingugen erfüllt werden (Debugausgabe?), damit er die show() Methode überhaupt erreicht?

*grüssle*
MeinerEiner
 
Ich hab da jetzt noch sowas probiert:
show() vor der if Bedingung geht auch nicht...
Java:
public void actionPerformed(java.awt.event.ActionEvent e) {

					CardLayout cl = (CardLayout) (cards.getLayout());

					cl.show(cards, "1");

					showTableContent();
					String table = new String();
					table = tbls_jComboBox1.getSelectedItem().toString();
					if (getCbUpdate().isSelected()
							&& table.equals("laptopbestand")) {
						System.out.println("Wichtig! " + table);
						System.out.println("Ups UPdate");

					} else {
						cl.show(cards, "2");

					}
					if (getCbNeuAnlegen().isSelected()
							&& table.equals("laptopbestand")) {

						cl.show(cards, "1");
					} else {
						System.out.println("Ups Neu");

					}
 
Komischerweise habe ich da folgende Ausgabe in der Console:
Code:
Wichtig! laptopbestand
Ups UPdate
Ups Neu

Er hätte da ja eigentlich nicht in die zweite Bedingung reingehen sollen...
 
Wieso hast du denn jetzt c1.showCards("1") da drin stehen?

Du weist hoffentlich, das wenn du die Panels mit
Code:
cards.add(card1, "NeuLaptopbestand");cards.add(card2, "UpdLaptopbestand");
hinzufügst, du sie auch mit

Code:
cards.show("NeuLaptopbestand"); cards.show("UpdLaptopbestand");
wieder zum Vorschein bringst..?

Die Debugausgabe zeigt doch folgendes:
Die erste if anweisung wird erfüllt und nicht deren else anweisung, daher wird auch keine komponente angezeigt.
die zweite if anweidung wird nicht erfüllt, sondern deren else anweisung, also wird auch keine komponente da drin..

ich würde mal sagen, du hast da einen kleinen denkfehler drin..


*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Sorry, es gab nen kleinen Missverständnis... Ich hab da mal für Testzwecke das
umgestellt... von "NeuLaptopbestand" auf "1"... :rolleyes: Danke aber für den Hinweis!

Am besten poste ich die ganze Klasse am Montag...
Ob da ein Denkfehler drin ist kann ich schlecht beurteilen, da es am Anfang mit normalen JPanel funktioniert hat... je nach dem was ausgewählt war, hat es einen von den beiden Panels angezeigt...

Ich wollt sie aber übereinander zeigen...
Das Problem ist aber das es in diesen "cards" garkeine von meinen beiden Panels anzeigt. :(

Naja ich zeig euch dann die ganze Klasse am Montag!
Bis dene...

Schönes Wochenende
pdikij
 
Ich glaub, es ist auch wirklich das beste, nochmal komplett zu posten.

Und dann vielleicht nochmal sagen, was du mit
Ich wollt sie aber übereinander zeigen...
meinst?
Nur nochmal zur Klarstellung, mit einem CardLayout kannst du nur eine Komponente anzeigen. Mit einem CardLayout ist es nur relativ simpel, schnell zwischen den einzelnen Komponenten zu wechseln..

*grüssle*
MeinerEiner
 
Hallo!
Ich poste jetzt meine ganze Klasse "ErfassenFrame".

Es kann sein, dass bei der if - Anweisung, wo ich das entsprechende card zur Anzeige auswähle, alles durcheinander ist... Ich hab alles versucht Zeigt trotzdem nix an...

Also hier ist die Klasse...

P.S. Mit übereinander anzeigen meine ich, dass jenachdem welche Option Ausgewählt ist möchte ich die entsprechenden Inhalte anzeigen...
 

Anhänge

  • ErfassenFrame.txt
    16,7 KB · Aufrufe: 35
Moin!
Das erste, was mir aufgefallen ist, als ich mir das mal ein bisserl genauer angeguckt habe,
ist
das man Komponenten in das CardLayout mit addLayoutComponent(Component,ident)
einfuegt.
Zudem hast du auch noch ein paar Probleme mit den Methoden
getPNeuLaptopbestand() und getJPLaptopbestand()

Statt diesen hab ich nunmal 2 Buttons eingefuegt und klappt es auch mit der Anzeige.

Code:
cards = new JPanel();
                        JPanel card1 = new JPanel();
            JPanel card2 = new JPanel();
            card1.add(new JButton("Test"));
            card2.add(new JButton("Test2"));
            CardLayout cl = new CardLayout();
                        
                        cards = new JPanel();
                        cards.setLayout(cl);
            cards.setBounds(new Rectangle(270, 9, 735, 236));
            cl.addLayoutComponent(card1,"1");
                        cl.addLayoutComponent(card2,"2");
                        cards.add(card1, "1");
            cards.add(card2, "2");
            cl.show(cards,"1");
                        return cards;

Also, getPNeuLaptopbestand() und getJPLaptopbestand() musst du mal überarbeiten. Möglich das da irgendlweche Grössenangaben nicht stimmen.
Zerix hat auch schonmal gesagt, das du solche Sachen:
Code:
jPLaptopbestand.add(jLabel4, null);
nicht machen sollst.
Stattdessen fügst du sie bitte mit
Code:
jPLaptopbestand.add(jLabel4);
ein..

Ebenso solltest du auch das unterlassen:
Code:
jContentPane.setLayout(new GridLayout(2, 0));
Eine Spalte solltest du dem Layout schon geben...


*grüssle*
MeinerEiner
 

Neue Beiträge

Zurück