mycanvas[]初始化,请在init()方法中,并在
       for(int i=1;i<=20;i++)
       {
          mycanvas[i]=new Mycanvas(i,i);
          p1.add(mycanvas[i]);
       }
之前,加上mycanvas = new Mycanvas[20] ;

解决方案 »

  1.   

    同意楼上!
    Java中,数组也是一个对象,需要new 来创建~
    呵呵~~
      

  2.   

    因为你还没有给每个mycanvas[]分配地址空间,必须像上面做个循环,每个都new一下,我第一次这样写的时候也犯了这个错误,必经阶段,呵呵
      

  3.   

    mycanvas[]初始化,请在init()方法中,并在
           for(int i=1;i<=20;i++)
           {
              mycanvas[i]=new Mycanvas(i,i);
              p1.add(mycanvas[i]);
           }
    之前,加上mycanvas = new Mycanvas[20] ;但程序仍然有误
      

  4.   

    这位朋友你可要好好谢谢我。
    我花了好久调试了一下。
    你犯了一个低级错误,请在p1=new Panel();
    之后加上p2=new Panel ();即可。
      

  5.   

    总算搞定了。
    原来你的p1用了CardLayout所以在添加组件时要用add(component,String)
    其中component是你要的组件,string是提供给CardLayout用来显示组件的名字如card.show(component,string)
    主要代码为
    Mycanvas  mycanvas[]=new Mycanvas[20];
    Panel p2=new Panel();
     for(int i=0;i<20;i++)  //原来i=1; i<=20;java数组以0开始。
       {
          mycanvas[i]=new Mycanvas(i,i);
          p1.add(mycanvas[i],"comp"+i);//这是最主要的变化。
       }完整代码
    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;class Mycanvas extends Canvas
    {
       int x,y;   Mycanvas(int a,int b)
       {
          x=a;y=b;
          getSize();
       }
       public Dimension getPreferedSize()
       {
          return new Dimension(200,100);
       }
       public void paint(Graphics g)
       {
          g.setColor(Color.red);
          g.fillOval(50,50,4*x,4*y);
          g.drawString("我是第 "+x,20,90);
       }
    }
    public class Mycode1 extends Applet implements ActionListener
    {
       CardLayout mycard;
    Button button1,button2,button3;
    Mycanvas mycanvas[]=new Mycanvas[20];
    Panel p1,p2;
    public void init()
    {
       setLayout(new BorderLayout());//Applet的布局
       mycard=new CardLayout();
       p1=new Panel();
           p2=new Panel();    p1.setLayout(mycard);
       button1=new Button("first");
       button2=new Button("next");
       button3=new Button("last");
       for(int i=0;i<20;i++)
       {
          mycanvas[i]=new Mycanvas(i,i);
          p1.add(mycanvas[i],"com"+i);
       }
       button1.addActionListener(this);
       button2.addActionListener(this);
       button3.addActionListener(this);
       p2.add(button1);
       p2.add(button2);
       p2.add(button3);
            add(p1,BorderLayout.CENTER);
       add(p2,BorderLayout.NORTH); }
    public void actionPerformed(ActionEvent e)
    {
       if(e.getSource()==button1)
       {
          mycard.first(p1);
       }
       if(e.getSource()==button2)
       {
          mycard.next(p1);
       }
       if(e.getSource()==button3)
       {
          mycard.last(p1);
       }
    }
    }
      

  6.   

    谢谢大家了!!
    尤其是jgo(航海家),大家都有分!!