CardLayout: wrong parent

Status
Nicht offen für weitere Antworten.

richardkrieger

Aktives Mitglied
Hallo,

hier im Forum habe ich ein Post mit dem gleichen Problem gefunden, aber leider keine Lösung.

Wird CardLayout überhaupt von jemandem benutzt?

Hier code einer Testklasse, wo ich selber versucht habe das Problem zu lösen:


Code:
import javax.swing.*;
import java.awt.*;

public class TestClass {

	/**
	 * @param args
	 */
		 public static void main(String[] args) {
			 try{
			 JFrame fenster=new JFrame("hauptfenster");
			 fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			 CardLayout card=new CardLayout();
			 JPanel panel1=new JPanel();
			 JPanel panel2=new JPanel();
			 JPanel panel3=new JPanel();
			 fenster.setLayout(card);
			 panel1.add(new JLabel("Panel1"));
			 panel2.add(new JLabel("Panel2"));
			 panel3.add(new JLabel("Panel3"));
			 card.addLayoutComponent(panel1,"1");
			 card.addLayoutComponent(panel2,"2");
			 card.addLayoutComponent(panel3,"3");
//			 card.show(panel1,"1");  // sobald die Zeile aktiviert wird, gibts Fehlermeldung
			 fenster.setSize(400,400);
			 fenster.setVisible(true);
			 } catch(Exception e){
				 System.out.println(e.toString());
			 }
			 }
	}
Fehlermeldung selbst lautet:
java.lang.IllegalArgumentException: wrong parent for CardLayout

wenn ich es richtig verstehe, ist sein parent JFrame oder nicht? Was gefällt CardLayout an JFrame nicht?
 
Hallo,

habe das Problem gelöst. Richtige testklasse sieht jetzt so aus:
Code:
import javax.swing.*;
import java.awt.*;

public class TestClass {

	/**
	 * @param args
	 */
		 public static void main(String[] args) {
			 try{
			 JFrame fenster=new JFrame("hauptfenster");
			 fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			 JPanel hpanel=new JPanel();
			 CardLayout card=new CardLayout();
			 JPanel panel1=new JPanel();
			 JPanel panel2=new JPanel();
			 JPanel panel3=new JPanel();
			 hpanel.setLayout(card);
			 panel1.add(new JLabel("Panel1"));
			 panel2.add(new JLabel("Panel2"));
			 panel3.add(new JLabel("Panel3"));
			 hpanel.add(panel1,"1");
			 hpanel.add(panel2,"2");
			 hpanel.add(panel3,"3");
			 fenster.add(hpanel);
			 card.show(hpanel,"2");
			 fenster.setSize(400,400);
			 fenster.setVisible(true);
			 } catch(Exception e){
				 System.out.println(e.toString());
			 }
			 }
	}

JFrame darf anscheinend kein "parent" sein, JPanel aber wohl.
es ist ein bisschen komisch, dass einzelne Panels im "show" über Strings angesprochen werden. Aber was solls........ Hauptsache - funktioniert!!!!!!!!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben