2013-05-12 2 views
0

NetBeans는 애플릿 라이브러리를 가져 왔지만 내 코드에서 getDocumentBase()를 인식하지 못하고 내 프로젝트 및 다른 모든 필수 파일에 내 html 파일을 가지고 있습니다.getdocumentBase()에서 "심볼을 찾을 수 없음"을 얻으십시오.

import java.awt.*; 
import java.applet.*; 


public class AirportCanvas extends Canvas 
{ 
    SingleLaneAirport controller; 

    Image redPlane; 
    Image bluePlane; 
    Image airport; 

    //AudioClip crashSound; 

    int[] redX,redY,blueX,blueY; 

    int maxCar = 2; 

    final static int initredX = 5; 
    final static int initredY = 55; 
    final static int initblueX = 410; 
    final static int initblueY = 130; 
    final static int bridgeY = 90; 

    boolean frozen = false; 
    int cycleTime = 20; 

    AirportCanvas(SingleLaneAirport controller) 
    { 
     super(); 
     this.controller = controller; 

//  crashSound=controller.getAudioClip(controller.getDocumentBase(),"crash.au"); 

     MediaTracker mt; 
     mt = new MediaTracker(this); 

     redPlane = controller.getImage(controller.getDocumentBase(), "redplane.png"); 
     mt.addImage(redPlane, 0); 

     bluePlane = controller.getImage(controller.getDocumentBase(), "blueplane.png"); 
     mt.addImage(bluePlane, 1); 

     airport = controller.getImage(controller.getDocumentBase(), "airport.png"); 
     mt.addImage(airport, 2); 

     try 
     { 
      mt.waitForID(0); 
      mt.waitForID(1); 
      mt.waitForID(2); 
     } 
     catch (java.lang.InterruptedException e) 
     { 
      System.out.println("Couldn't load one of the images"); 
     } 

     setSize(airport.getWidth(null),airport.getHeight(null)); 
     init(1); 
    } 

    public final void init(int ncars) 
    { //set number of cars 
     maxCar = ncars; 
     frozen = false; 
     redX = new int[maxCar]; 
     redY = new int[maxCar]; 
     blueX = new int[maxCar]; 
     blueY = new int[maxCar]; 

     for (int i = 0; i<maxCar ; i++) 
     { 
      redX[i] = initredX - i*85; 
      redY[i] = initredY; 
      blueX[i] =initblueX + i*85; 
      blueY[i] =initblueY; 
     } 

     repaint(); 
    } 

    Image offscreen; 
    Dimension offscreensize; 
    Graphics offgraphics; 

    public void backdrop() 
    { 
     Dimension d = getSize(); 

     if ((offscreen == null) || (d.width != offscreensize.width) 
           || (d.height != offscreensize.height)) 
     { 
      offscreen = createImage(d.width, d.height); 
      offscreensize = d; 
      offgraphics = offscreen.getGraphics(); 
      offgraphics.setFont(new Font("Helvetica",Font.BOLD,36)); 
     } 

     offgraphics.setColor(Color.lightGray); 
     offgraphics.drawImage(airport,0,0,this); 
    } 

    @Override 
    public void paint(Graphics g) 
    { 
     update(g); 
    } 

    @Override 
    public void update(Graphics g) 
    { 
     backdrop(); 

     for (int i=0; i<maxCar; i++) 
     { 
      offgraphics.drawImage(redPlane,redX[i],redY[i],this); 
      offgraphics.drawImage(bluePlane,blueX[i],blueY[i],this); 
     } 

     if (blueY[0]==redY[0] && Math.abs(redX[0]+80 - blueX[0])<5) 
     { 
      offgraphics.setColor(Color.red); 
      offgraphics.drawString("Crunch!",200,100); 
      frozen=true; 
//   crashSound.play(); 
     } 

     g.drawImage(offscreen, 0, 0, null); 
    } 

    //returns true for the period from just before until just after car on bridge 
    public boolean moveRed(int i) throws InterruptedException 
    { 
     int X = redX[i]; 
     int Y = redY[i]; 

     synchronized (this) 
     { 
      while (frozen) 
       wait(); 

      if (i==0 || Math.abs(redX[i-1] - X) > 120) 
      { 
       X += 2; 

       if (X >=500) 
       { 
        X = -80; Y = initredY; 
       } 

       if (X >=60 && X < 290 && Y<bridgeY) 
        ++Y; 

       if (X >=290 && Y>initredY) 
        --Y; 
      } 

      redX[i]=X; 
      redY[i]=Y; 
      repaint(); 
     } 

     Thread.sleep(cycleTime); 

     return (X>25 && X<400); 
    } 

    //returns true for the period from just before until just after car on bridge 
    public boolean moveBlue(int i) throws InterruptedException 
    { 
     int X = blueX[i]; 
     int Y = blueY[i]; 

     synchronized (this) 
     { 
      while (frozen) 
       wait(); 

      if (i==0 || Math.abs(blueX[i-1] - X) > 120) 
      { 
       X -= 2; 

       if (X <=-80) 
       { 
        X = 500; Y = initblueY; 
       } 

       if (X <=370 && X > 130 && Y>bridgeY) 
        --Y; 

       if (X <=130 && Y<initblueY) 
        ++Y; 

       blueX[i]=X; 
      } 

      blueY[i]=Y; 
      repaint(); 
     } 

     Thread.sleep(cycleTime); 
     repaint(); 

     return (X>25 && X<400); 
    } 

    public synchronized void freeze() 
    { 
     frozen = true; 
    } 

    public synchronized void thaw() 
    { 
     frozen = false; 
     notifyAll(); 
    } 
} 

단일 레인 공항 클래스 :

import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 

public class SingleLaneAirport { 
    AirportCanvas display; 
    Button restart; 
    Button freeze; 
    Button onecar; 
    Button twocar; 
    Button threecar; 
    Checkbox fair; 
    Checkbox safe; 
    boolean fixed = false; 
    int maxCar = 1; 

    Thread red[]; 
    Thread blue[]; 

    @Override 
    public void init() 
    { 
     setLayout(new BorderLayout()); 
     display = new AirportCanvas(this); 
     add("Center",display); 
     restart = new Button("Restart"); 

     restart.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
      display.thaw(); 
      } 
     }); 

     freeze = new Button("Freeze"); 

     freeze.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
      display.freeze(); 
      } 
     }); 

     onecar = new Button("One Car"); 

     onecar.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
      stop(); 
      maxCar = 1; 
      start(); 
      } 
     }); 

     twocar = new Button("Two Cars"); 

     twocar.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       stop(); 
       maxCar = 2; 
       start(); 
      } 
     }); 

     threecar = new Button("Three Cars"); 

     threecar.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       stop(); 
       maxCar = 3; 
       start(); 
      } 
     }); 

     safe = new Checkbox("Safe",null,true); 
     safe.setBackground(Color.lightGray); 

     safe.addItemListener(new ItemListener() 
     { 
      public void itemStateChanged(ItemEvent e) 
      { 
       stop(); 
       start(); 
      } 
     }); 

     fair = new Checkbox("Fair",null,false); 
      fair.setBackground(Color.lightGray); 

     fair.addItemListener(new ItemListener() 
     { 
      public void itemStateChanged(ItemEvent e) 
      { 
       stop(); 
       start(); 
      } 
     }); 

     Panel p1 = new Panel(); 
     p1.setLayout(new FlowLayout()); 
     p1.add(freeze); 
     p1.add(restart); 
     p1.add(onecar); 
     p1.add(twocar); 
     p1.add(threecar); 
     p1.add(safe); 
     p1.add(fair); 
     add("South",p1); 
     setBackground(Color.lightGray); 
    } 

    @Override 
    public void start() 
    { 
     red = new Thread[maxCar]; 
     blue = new Thread[maxCar]; 
     display.init(maxCar); 
     Airport b; 

     if (fair.getState() && safe.getState()) 
      b = new FairAirport(); 
     else if (safe.getState()) 
      b = new SafeAirport(); 
     else 
      b = new Airport(); 

     for (int i = 0; i<maxCar; i++) 
     { 
      red[i] = new Thread(new RedPlane(b,display,i)); 
      blue[i] = new Thread(new BluePlane(b,display,i)); 
     } 

     for (int i = 0; i<maxCar; i++) 
     { 
      red[i].start(); 
      blue[i].start(); 
     } 
    } 

    @Override 
    public void stop() 
    { 
     for (int i = 0; i<maxCar; i++) 
     { 
      red[i].interrupt(); 
      blue[i].interrupt(); 
     } 
    } 
} 
+2

후 귀하의'SingleLaneAirport'클래스입니다. –

+1

1) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 2) 애플릿을 코딩하는 이유는 무엇입니까? 사양으로 인해 예정된 경우. 선생님이 [왜 CS 교사가 Java 애플릿 교육을 중단해야하는지] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)를 참조하십시오. 3) Swing이 아닌 AWT를 사용해야하는 이유 AWT 구성 요소를 사용하여 포기해야하는 여러 가지 이유 때문에 [AWT를 통한 스윙 엑스트라] (http://stackoverflow.com/a/6255978/418556)에서이 대답을 참조하십시오. 4)'getdocumentBase()'(제목에서와 같이)는 대소 문자가 틀림에주의하십시오. –

+1

Ravi의 덧글에 덧붙여서 : 게시 한 코드는 거의 무의미합니다.이를 제거하고'SingleLaneAirport' 코드를 보여주십시오. 'Applet' 또는'JApplet'에서 확장됩니까? –

답변

2

클래스 SingleLaneAirportgetDocumentBase() 기능을 사용하려면 Applet 클래스를 확장해야합니다 여기 내 코드의 일부이다.

getDocumentBase() 때문에 Applet 클래스의 기능이 아닌 Object 클래스

+0

나는 그것을 보았다. 그리고 나는 지금 바보 같은 느낌이 든다. – Ben

+0

걱정 마세요, 환호! –

관련 문제