a.clone()返回的还是一个LinkedList,不能赋给Enumeration!

解决方案 »

  1.   

    1、如楼上所说,应该至少这样:
    Enumeration e=(Enumeration)a.clone();2、i是个Integer对象,a.indexOf(a)是个整数,不可用equals比较,需要将a.indexOf(a)也转为Integer对象。
    i.equals(new Integer(a.indexOf(a)))或者取i的值和a.indexOf(a)比较
    i.intValue()==a.indexOf(a)3、x没有初始化,需要有
    x=0;这样只是编译通过,有没有逻辑错误就不知道了。
      

  2.   

    import java.util.*;
    import java.awt.*;
    public class ListTest extends Frame
    {
    public ListTest()
    {
    Panel p=new Panel();
    p.setLayout(new FlowLayout());
    p.add(new Button("Insert"));
    p.add(new Button("Append"));
    p.add(new Button("Remove"));
    p.add(new Button("Reset"));
    p.add(new Button("Next"));
    add("South",p);
    add("Center",canvas=new ListCanvas());
    canvas.redraw(a);
    }
    public boolean handlEvent(Event e)
    {
    if (e.id==Event.WINDOW_DESTROY) System.exit(0);
    return super.handleEvent(e);
    }
    public boolean action(Event evn,Object o)
    {
    if (o.equals("Insert"))
    {
    a.add(new Integer(m));
    m++;
    }
    else
    if (o.equals("Append"))
    {
    a.add(new Integer(m));
    m++;
    }
    else
    if (o.equals("Remove"))
    {
    a.remove(m);
    m--;
    }
    else
    if (o.equals("Next"))
    {
    a.get(m++);
    }
    else
    if (o.equals("Reset"))
    {
    a.getFirst();
    }
    else
    return super.action(evn,o);
    canvas.redraw(a);
    return true;
    }
    public static void main(String args[])
    {
    Frame f=new ListTest();
    f.resize(200,300);
    f.show();
    }
    private LinkedList a=new LinkedList();
    private ListCanvas canvas;
    private int m=1;
    }
    class ListCanvas extends Canvas
    {
    public void redraw(LinkedList new_a)
    {
    a=new_a;
    repaint();
    }
    public void paint(Graphics g)
    {
    Iterator e=a.iterator();
    int x,y,cx=0;
    x=0;
    y=0;

    while(e.hasNext())
    {
    g.drawRect(x,y,30,20);
    Integer i=(Integer)e.next();
    if(e.hasNext() && i.intValue()==a.indexOf(a))
    {
    cx=x;
    }
    g.drawString(i.toString(),x+1,y+19);
    g.drawLine(x+30,y+10,x+45,y+10);
    g.drawLine(x+45,y+10,x+40,y+5);
    g.drawLine(x+45,y+10,x+40,y+15);
    x+=45;
    }
    if(!a.isEmpty()) cx=x;
    g.drawLine(cx+15,25,cx+15,40);
    g.drawLine(cx+15,25,cx+10,30);
    g.drawLine(cx+15,25,cx+20,30);
    }
    private LinkedList a;
    }
    这样,用Iterator