java canvas数组_java的canvas

我想知道下面这段程序是为什么mycanvas=newMycanvas[21];for(inti=1;i<=20;i++){mycanvas[i]=newMycanvas(i,i);我明明只需要创建20个mycanvas数组,但是Mycanvas[21]有21个,我还试了...

我想知道下面这段程序是为什么

mycanvas=new Mycanvas[21];

for(int i=1;i<=20;i++)

{ mycanvas[i]=new Mycanvas(i,i);

我明明只需要创建20个mycanvas数组,但是Mycanvas[21]有21个,我还试了一下,把21改成20,那么applet就显示小程序没启动了。如果把21改成20,那么那个i<=20也要改成19,反正就是比上面的数组少一个数,这是为什么,请大神介绍一下。另外,源程序如下

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

class Mycanvas extends Canvas

{ int x,y;

Mycanvas(int a,int b)

{ x=a;

y=b;

setSize(100,160);

}

public void paint(Graphics g)

{ g.setColor(Color.red);

g.fillOval(50,50,4*x,4*y);//画实心椭圆

g.drawString("我是第"+x,10,150);

}

}

public class Example extends Applet implements ActionListener

{ CardLayout mycard;

Button button1,button2,button3;

Mycanvas mycanvas[];

Panel p;

public void init()

{ setLayout(new BorderLayout()); //小容器的布局是边界布局.

mycard=new CardLayout();

p=new Panel();

p.setLayout(mycard); //p的布局设置为mycard 卡片式布局 .

button1=new Button("first");

button2=new Button("next");

button3=new Button("last one");

mycanvas=new Mycanvas[21];

for(int i=1;i<=20;i++)

{ mycanvas[i]=new Mycanvas(i,i);

p.add("i am"+i,mycanvas[i]);

}

button1.addActionListener(this);

button2.addActionListener(this);

button3.addActionListener(this);

Panel p2=new Panel();

p2.add(button1);

p2.add(button2);

p2.add(button3);

add(p,BorderLayout.CENTER);

add(p2,BorderLayout.SOUTH); }

public void actionPerformed(ActionEvent e)

{ if(e.getSource()==button1)

{ mycard.first(p); }

else if(e.getSource()==button2)

{ mycard.next(p); }

else if(e.getSource()==button3)

{ mycard.last(p); }

}

}

注 普通的java数组创建20个然后只能用0到19而不能用20访问我是知道的。

不过这道题是相当于创建了21个数组,因为不是mycanvas=new Mycanvas[21]吗,然后它循环时(i=1;i<=20;i++)这不就是说它只用了canvas[0]到canvas[19]这20个数组,那么最后一个数组canvas[20]不就没用到了吗,所以它按理来说应该是可以删掉改成mycanvas=new Mycanvas[20]的,可是这样就出现applet小程序未启动的问题了。所以我想知道的是为什么最后一个没有用到数组删掉就出现问题了

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值