很简单,静态的内部类的使用问题。改城下面的看看:
import  java.awt.*;
import  java.awt.event.*;
import  java.io.*;
public class  CardTest1{
public static void main(String args[]) throws  Exception{
CardTest1 aa = new CardTest1();
aa.go();
} public void go() {
Panel   p1,p2,p3;
Frame  f=new Frame("Card Test");
CardLayout  myCard=new  CardLayout();
f.setLayout(myCard); p1=new Panel();
p2=new Panel();
p3=new Panel(); p1.setBackground(Color.yellow);
p2.setBackground(Color.green);
p3.setBackground(Color.magenta); Button b=new Button("xixi"); f.add(p1,"a");
f.add(p2,"hi");
f.add(p3,"xyx");
f.add(b,"abc"); myCard.show(f,args[0]); f.setSize(200,200);
f.setVisible(true);
}
}
}

解决方案 »

  1.   

    楼上的答案我有点不赞同,首先这不是什么静态内部类的问题,main是一个静态函数,没有任何问题,在里面声明对象也是正确的,我觉得错在main函数throws  Exception,应该在内部用try{} catch(Exception e){}把它捕捉出来
      

  2.   

    程序没错
    但你运行的时候可能没输入参数或参数不正确
    你把myCard.show(f,args[0]);改为myCard.show(f,"hi");就知道怎么回事了。
      

  3.   

    这个很明显,args[0]你没给值!
    因此出现的数组越界的异常。
      

  4.   

    原来如此我要myCard.show(f,args[0]);传绨呢
      

  5.   

    应该把public void go()改为public CardTest1()就行了!