package other;import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class MycardLayout implements ActionListener{
static CardLayout myCard=new CardLayout();
static Panel p1=new Panel();
public static void main(String[] args) {
int i;
MyCanvas my[]=new MyCanvas[21];
p1.setLayout(myCard);
for(i=1;i<=20;i++)
{
my[i]=new MyCanvas(i,i);//创建一个半径为i,i的画布
p1.add("i am"+i,my[i]);
}
Panel p2=new Panel();
p2.setLayout(new FlowLayout());
Button b1=new Button("第一张");
Button b2=new Button("下一张");
Button b3=new Button("最后一张");
p2.add(b1);
p2.add(b2);
p2.add(b3);
//对各个按钮注册监听器
b1.addActionListener(new MycardLayout());
b2.addActionListener(new MycardLayout());
b3.addActionListener(new MycardLayout());
Frame f=new Frame("请看我的画图效果");
f.setLayout(new BorderLayout());
f.add(p1,"Center");
f.add(p2,"South");
f.setBounds(0,0,260,200);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)// CardLayout布局管理器的用法
{
if(e.getActionCommand()=="第一张")
myCard.first(p1);
if(e.getActionCommand()=="下一张")
myCard.next(p1);
if(e.getActionCommand()=="最后一张")
myCard.last(p1);
}}
class MyCanvas extends Canvas
{
int x,y;
//确定大小参数以及画布的大小
public MyCanvas(int x,int y) {
this.x=x;
this.y=y;
this.getSize();//这句是设置画布大小吗?为什么可以这样设置?
}
public void paint(Graphics g)//重绘信息
{
g.setColor(Color.red);
g.drawString("我是第"+x,20 ,20 );
g.fillOval(50,50,4*x,4*y);
}

}