Problem mit JPanel und CardLayout

Hallo Allerseits!
Hatte viel zu tun, deshalb hab mich auch lang nicht gemeldet...

Hab jetzt versucht es anzupassen mit denem Beispiel MeinerEiner
Habs bei dem Button mit eingefügt:
Java:
private JButton getShw_jButton1() {
		if (shw_jButton1 == null) {
			shw_jButton1 = new JButton();
			shw_jButton1.setText("Tabelle Auswählen");
			shw_jButton1.addActionListener(new java.awt.event.ActionListener() {

				public void actionPerformed(java.awt.event.ActionEvent e) {

					cards = new JPanel();
                    JPanel card1 = new JPanel();
                    JPanel card2 = new JPanel();
      	 			card1.add(getJPLaptopbestand());
      	 			card2.add(getPNeuLaptopbestand());
      	 			CardLayout cl = new CardLayout();
                    
                    cards = new JPanel();
                    cards.setLayout(cl);
                    cards.setBounds(new Rectangle(267, 86, 734, 234));
                    cl.addLayoutComponent(card1,"1");
                    cl.addLayoutComponent(card2,"2");
                    cards.add(card1, "1");
                    cards.add(card2, "2");
                    cl.show(cards,"1");
                    
                    jPanelDown.add(cards);
                    

					showTableContent();
					String table = new String();
					table = tbls_jComboBox1.getSelectedItem().toString();
					
					if (getCbUpdate().isSelected()
							&& table.equals("laptopbestand")) {
						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");

					}

				}
			});
		}
		return shw_jButton1;
	}

Das Anzeigen beim Buttondrücken funktionier... aber es werden immer noch nicht die Inhalte von den JPanels angezeigt... :(

Die Größenanpassung von den Cards an die JPanels habe ich gemacht.
Alle null-Werte bei neuen Elementen habe ich auch rausgenommen.

Und dieses Bild liefert mir das Programm (ein leeres card)...
 

Anhänge

  • leeresCard.jpg
    leeresCard.jpg
    16,2 KB · Aufrufe: 24
Zuletzt bearbeitet:
Moin!
Irgendwie verschlimmbesserst du immer alles.
Wieso erstellst du das Panel mit dem CardLayout und dessen Inhalt erst wenn der Button gedrückt wird?
So wie du es früher hattest, erst alles erstellen, dem CardLayout hinzufügen und dann beim Drücken des Buttons den gewünschten Inhalt anzeigen lassen, macht doch viel mehr Sinn.
Hast du das korrigiert, dann poste nochmal den kompletten Code..

*grüssle*
MeinerEiner
 
Hallo!
Also hier ist nochmal mein ganzer Code...
Das ist das beste was mir eingefallen ist, und es klappt noch mit einem leeren Panel...
Aber es funktioniert immer noch nicht...
Ich weiß auch gar nicht ob ich die Komponenten in die richtige Methode gesetzt habe...
Währe sehr dankbar wenn du mir da ein bisschen hilfst! :rolleyes:

Schöne grüße

pdikij
 

Anhänge

  • ErfassenFrame.txt
    17,4 KB · Aufrufe: 38
Moin!
Was mir auffällt, ist das du das Panel cards nirgendwo hinzufügst...

Mir ist das auch echt zu groß zum durchgucken.. ich würde dir empfehlen, schmeiß das Ding über den Haufen. Dann solltest du dir einen GUIBuilder nehmen und das Ganze nochmal aufbauen. Ich blick durch den Code nämlich nicht wirklich durch und du ja auch nicht..

*grüssle*
MeinerEiner
 
Naja, hab das ja auch mit Visual Editor von Eclipse zusammengebastelt... das Ergebnis sieht man ja.
Was meinst du mit 'cards' nirgendwo hinzufügen? Es wird doch dem unteren Panel hinzugefügt wenn der Knopf gedrückt wird... Oder verstehe ich da was falsch?
Code:
 cl.show(cards,"1");
 jPanelDown.add(cards);
 
Ja sorry, hab ich übersehen.

Aber mir fehlt die Zeit, mich wirklich mit dem ganzen Code auseinanderzusetzen. Sofern dir also niemand anders weiterhelfen kann, würde ich dir dennoch empfehlen, es nochmal neu aufzubauen...


*grüssle*
MeinerEiner
 
Hallo!
Ich hab jetzt mein Problem gelöst und muss nicht die ganze Klasse neu aufsetzen!
Es lag an dem folgenden Schritt, dass es nicht angezeigt wurde:
Code:
cl.addLayoutComponent(card1,"1");
cl.addLayoutComponent(card2,"2");
cards.add(card1, "1");
cards.add(card2, "2");
Ich habe einfach das auf
Code:
cl.addLayoutComponent(getJPLaptopbestand(),"1");
cl.addLayoutComponent(getPNeuLaptopbestand(),"2");
cards.add(getJPLaptopbestand(), "1");
cards.add(getPNeuLaptopbestand(), "2");
geändert und jetzt funktioniert es auch!

Schönen Tag noch!

pdikij
 

Neue Beiträge

Zurück