package forward;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class P2 extends Panel
{
Label l1,l2;
TextField t1,t2;
Button btn;
P2()
{
setLayout(new GridLayout(1,4));
l1=new Label("姓名",Label.CENTER);
l2=new Label("学号",Label.CENTER);
t1=new TextField(10);
t2=new TextField(10);
btn=new Button("login");
add(l1);
add(t1);
add(l2);
add(t2);
add(btn);
}

}
 class P3 extends Panel{
Label l1,l2;
TextField t1,t2;
P3()
{
setLayout(new GridLayout(1,4));
l1=new Label("姓名",Label.CENTER);
l2=new Label("学号",Label.CENTER);
t1=new TextField(10);
t2=new TextField(10);
add(l1);
add(t1);
add(l2);
add(t2);
}

}
public class P1 extends Panel{
public static void main(String args[]){
new ma();

}

}
class ma extends JFrame implements ActionListener{
P2 pn2;
P3 pn3;
CardLayout cc=new CardLayout();
ma()
{super("");
pn2=new P2();
pn3=new P3();
setLayout(cc);
add("first",pn2);
add("second",pn3);
pn2.btn.addActionListener(this);
setSize(400,400);
show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==pn2.btn)
{
String ss="123";
if(ss.compareTo(pn2.t1.getText())==0&&ss.compareTo(pn2.t2.getText()) ==0)
cc.show(this,"second");

}


}

}
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout
at java.awt.CardLayout.checkLayout(Unknown Source)
at java.awt.CardLayout.show(Unknown Source)
at forward.ma.actionPerformed(P1.java:73)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)问题1;为什么我用JLabel的时候报了另一种异常,后来改成Label就是抱现在这样的异常。
问题2:到这一步该怎么解决?问题好象是出在cc.show(this,"second");上。

解决方案 »

  1.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;class P2 extends Panel {
        Label l1, l2;    TextField t1, t2;    Button btn;    P2() {
            setLayout(new GridLayout(1, 4));
            l1 = new Label("Name", Label.CENTER);
            l2 = new Label("Num", Label.CENTER);
            t1 = new TextField(10);
            t2 = new TextField(10);
            btn = new Button("login");
            add(l1);
            add(t1);
            add(l2);
            add(t2);
            add(btn);
        }}class P3 extends Panel {
        Label l1, l2;    TextField t1, t2;    P3() {
            setLayout(new GridLayout(1, 4));
            l1 = new Label("Name", Label.CENTER);
            l2 = new Label("Num", Label.CENTER);
            t1 = new TextField(10);
            t2 = new TextField(10);
            add(l1);
            add(t1);
            add(l2);
            add(t2);
        }}public class P1 extends Panel {
        public static void main(String args[]) {
            new ma();    }}class ma extends JFrame implements ActionListener {
        P2 pn2;    P3 pn3;    CardLayout cc = new CardLayout();    ma() {
            super("");
            pn2 = new P2();
            pn3 = new P3();
            this.getContentPane().setLayout(cc);
            this.getContentPane().add("first", pn2);
            this.getContentPane().add("second", pn3);
            pn2.btn.addActionListener(this);
            setSize(400, 400);
            show();
        }    public void actionPerformed(ActionEvent e) {
            if (e.getSource() == pn2.btn) {
                String ss = "123";
                if (ss.compareTo(pn2.t1.getText()) == 0 && ss.compareTo(pn2.t2.getText()) == 0) {
                    if (this.getContentPane().getLayout() == this.cc) {
                        this.cc.show(this.getContentPane(), "second");
                    }
                }
            }
        }}
    是这样吗?
      

  2.   


    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; class P2 extends Panel { 
        Label l1, l2;     TextField t1, t2;     Button btn;     P2() { 
            setLayout(new GridLayout(1, 4)); 
            l1 = new Label("Name", Label.CENTER); 
            l2 = new Label("Num", Label.CENTER); 
            t1 = new TextField(10); 
            t2 = new TextField(10); 
            btn = new Button("login"); 
            add(l1); 
            add(t1); 
            add(l2); 
            add(t2); 
            add(btn); 
        } } class P3 extends Panel { 
        Label l1, l2;     TextField t1, t2;     P3() { 
            setLayout(new GridLayout(1, 4)); 
            l1 = new Label("Name", Label.CENTER); 
            l2 = new Label("Num", Label.CENTER); 
            t1 = new TextField(10); 
            t2 = new TextField(10); 
            add(l1); 
            add(t1); 
            add(l2); 
            add(t2); 
        } } public class P1 extends Panel { 
        public static void main(String args[]) { 
            new ma();     } } class ma extends JFrame implements ActionListener { 
        P2 pn2;     P3 pn3;     CardLayout cc = new CardLayout();     ma() { 
            super(""); 
            pn2 = new P2(); 
            pn3 = new P3(); 
            this.getContentPane().setLayout(cc); 
            this.getContentPane().add("first", pn2); 
            this.getContentPane().add("second", pn3); 
            pn2.btn.addActionListener(this); 
            setSize(400, 400); 
            show(); 
        }     public void actionPerformed(ActionEvent e) { 
            if (e.getSource() == pn2.btn) { 
                String ss = "123"; 
                if (ss.compareTo(pn2.t1.getText()) == 0 && ss.compareTo(pn2.t2.getText()) == 0) { 
                    if (this.getContentPane().getLayout() == this.cc) { 
                        this.cc.show(this.getContentPane(), "second"); 
                    } 
                } 
            } 
        } }