请大家帮我看看这段代码(关于CardLayout的)为什么不能执行,谢谢。
代码如下:
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 void paint(Graphics g)
{
g.setColor(Color.red);
g.fillOval(50,50,4*x,4*y);
g.drawString("我是第"+x,20,290);
}
public Dimension getPreferredSize()
{return new Dimension(200,100);}
}
public class Example12_2 extends Applet implements ActionListener
{
CardLayout mycard;
Button bu1,bu2,bu3;
Mycanvas mycanvas[];
Panel p1;
public void init()
{
setLayout(new BorderLayout());//applet的布局管理器是Border
mycard=new CardLayout();
p1=new Panel();
p1.setLayout(mycard);//面板的布局为card,这一行有问题
^^^^^^^^^^^^^^^^^^^^
mycanvas=new Mycanvas[20];
for(int i=1;i<=20;i++)
{
mycanvas[i]=new Mycanvas(i,i);
p1.add(mycanvas[i]);
}
bu1=new Button("first");bu1.addActionListener(this);
bu2=new Button("next"); bu2.addActionListener(this);
bu3=new Button("last one");bu3.addActionListener(this);
Panel p2=new Panel();
p2.add(bu1);p2.add(bu2);p2.add(bu3);
add(p1,"Center");
add(p2,"South");
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bu1)
{mycard.first(p1);}
else if(e.getSource()==bu2)
{mycard.next(p1);}
else if(e.getSource()==bu3)
{mycard.last(p1);}
}
}
这是书上的一个例子,通过编译了,但是在用appletviewer浏览它的html文件时出现错误。请大家帮忙看看,谢谢。
问题点数:30、回复次数:4Top
1 楼yellow007(乱马007)回复于 2004-04-04 00:52:38 得分 30
我觉得应该把每个canvas[i]放进一个panel[i],再将panel[i]放进panel1中
Top
2 楼fxfzx(虾米)回复于 2004-04-04 07:58:46 得分 0
试过了,可是不管用呢?Top
3 楼fxfzx(虾米)回复于 2004-04-04 08:15:41 得分 0
解决了。
竟然是把p1.setLayout(mycard);//面板的布局为card,这一行有问题
移到
for(int i=1;i<=20;i++)
{
mycanvas[i]=new Mycanvas(i,i);
p1.add(mycanvas[i]);
}
的后面。
为什么会这样?
Top
4 楼fxfzx(虾米)回复于 2004-04-06 18:21:59 得分 0
大概Java就这样吧Top




