buttonPanel你没有声明啊。
在构造方法前加一句:private Panel buttonPanel = new Panel();

解决方案 »

  1.   

    同楼上,修改如下:
    import java.awt.*;
    import java.net.*;
    public class Preload extends Frame{
        public static void main(String[] args){
            if (args.length==0){
            System.out.println("Must Input arg");
            System.exit(0);
            }
            if (args.length==2 && args[1].equals("-preload"))
                new Preload(args[0],true);
            else
                new Preload(args[0],false);
        }
    private TextField timeField;
    private long start=0;
    private boolean draw=false;
    private Image plate;
    private Panel buttonPanel = new Panel();//定义buttonPanel;public Preload(String imageFile,boolean preload){
    super("Preloading Images");
    buttonPanel.add(new Button("display Image"));
    timeField=new TextField(25);
    timeField.setEditable(false);
    buttonPanel.add(timeField);
    add("South",buttonPanel);
    registerImage(imageFile,preload);
    resize(1000,750);
    show();
    }
    public void paint(Graphics g){
        if (draw){
            g.drawImage(plate,0,0,this);
            showTime();
            }
        }
    public boolean action(Event event,Object object){
        draw=true;
        start=System.currentTimeMillis();
        repaint();
        return(true);
        }
    public boolean handleEvent(Event event){
        if (event.id==Event.WINDOW_DESTROY)
        System.exit(0);
        return(super.handleEvent(event));
        }
    private void registerImage(String imageFile,boolean preload){
        try{plate=getToolkit().getImage(new URL(imageFile));
        if(preload)
            prepareImage(plate,this);
            }
            catch(MalformedURLException mue){
                System.out.println("Bad url:"+mue);
                }
        }
    private void showTime(){
        timeField.setText("Elapsed Time:"+elapsedTime()+" seconds.");
        }
    private double elapsedTime(){    double delta=(double)(System.currentTimeMillis()-start);
        return(delta/1000.0);    }
    }