2012-07-05 55 views
-2

我一直在eclipse中研究java web applet(或者至少是我認爲是java web applet)。在我的電腦上測試成功後,我試圖將它嵌入到HTML文檔中。接下來的事情我知道,我陷入了錯誤。從我的研究中,我現在知道這些錯誤意味着我正在使用某種與Web小程序不兼容的代碼。不幸的是,我不知道代碼是什麼或者與applet不兼容,因此不知道如何解決這個問題。坦率地說,我甚至不知道從哪裏開始。我的代碼是相當複雜的:java applet和應用程序之間的區別

import java.applet.Applet; 
import java.awt.*; 
import java.net.*; 
import java.io.*; 
import java.awt.event.*; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.Toolkit; 


public class DerpAHerp extends Applet implements KeyListener, MouseListener, Runnable { 

int speed = 3; 
int andelay = 2; 
Thread animator; 
Point velocity = new Point(0,0); 
Point pos = new Point(50,50); 
Point ppos = new Point(0,0); 
int imgCount = 1; 
Image[] person_S = makeAnimation(6,"person_S-","png"); 
Image[] person_E = makeAnimation(6,"person_E-","png"); 
Image[] person_W = makeAnimation(6,"person_W-","png"); 
Image[] person_N = makeAnimation(6,"person_N-","png"); 
Image personDefault = person_S[0]; 
Image person = personDefault; 
Image offImage; 
Graphics offGraphics; 
Boolean moving = false; 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 


/** 
* @param args 
*/ 

    public void getConnection(){ 
     String asdf = ""; 

     try { 

       URL ourURL = new URL("http://dannyflax.antserve.com/d/"); //Coding Forums RSS Feed 
       HttpURLConnection huc = (HttpURLConnection)ourURL.openConnection();    
       huc.setRequestMethod("GET"); 
       huc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; JVM)");       
       huc.setRequestProperty("Pragma", "no-cache"); 
       huc.connect(); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(huc.getInputStream())); 

       String line = null; 
       while ((line = reader.readLine()) != null) { 
        // Either do your parsing here, or append it to a StringBuffer for later use 

       asdf = asdf.concat(line); 

       } 
     } 
       catch(IOException ioe) 
       { 
        ioe.printStackTrace(); 
       } 
       catch(Exception e) 
       { 
       System.err.println("General Exception " + e); 
       e.printStackTrace(); 
       } 


     } 
    public void paintFrame(Graphics g) { 

     g.setColor(getBackground()); 
     g.fillRect(0, 0, person.getWidth(null),person.getHeight(null)); 

     Graphics2D g2 = (Graphics2D) g; 


     if(velocity.x!=0 || velocity.y!=0){ 

      if(velocity.x>0){ 
      //East 
       if(imgCount%andelay == 0){ 
        person = person_E[(imgCount/andelay)%person_S.length]; 
        } 
      } 
      else if(velocity.x<0){ 
      //West 
       if(imgCount%andelay == 0){ 
        person = person_W[(imgCount/andelay)%person_S.length]; 
        } 
      } 
      else if(velocity.y>0){ 
      //South 
       if(imgCount%andelay == 0){ 
        person = person_S[(imgCount/andelay)%person_S.length]; 
        } 
      } 
      else if(velocity.y<0){ 
      //North 
       if(imgCount%andelay == 0){ 
        person = person_N[(imgCount/andelay)%person_S.length]; 
        } 
      } 




      imgCount++; 
     } 
     else{ 
      person = personDefault; 
      imgCount = 0; 
     } 

     g2.drawImage(person, 0, 0, this); 

     g2.finalize(); 


    } 
    public void update(Graphics g) { 


     if (offGraphics == null){ 
      if(person.getWidth(null) > 0 && person.getHeight(null) > 0) 
      offImage = createImage(person.getWidth(null),person.getHeight(null)); 
      else{ 
       offImage = createImage(1,1);  
      } 
      offGraphics = offImage.getGraphics(); 
      paintFrame(offGraphics); 
     } 


     Color bg = getBackground(); 




     paintFrame(offGraphics); 


     g.setColor(bg); 
     g.fillRect(ppos.x-(person.getWidth(null)/2), ppos.y-(person.getHeight(null)/2), person.getWidth(null),person.getHeight(null)); 







       g.drawImage(person, pos.x-(person.getWidth(null)/2),  pos.y-(person.getHeight(null)/2), this); 

       g.finalize(); 

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


    } 
    public void init() { 
     //Execute a job on the event-dispatching thread; creating this applet's GUI. 

     addKeyListener(this); 
      addMouseListener(this); 

    } 




@Override 
public void mouseClicked(MouseEvent arg0) { 
    // TODO Auto-generated method stub 


} 


@Override 
public void mouseEntered(MouseEvent arg0) { 
    // TODO Auto-generated method stub 

} 


@Override 
public void mouseExited(MouseEvent arg0) { 
    // TODO Auto-generated method stub 

} 


@Override 
public void mousePressed(MouseEvent arg0) { 
    // TODO Auto-generated method stub 

} 


@Override 
public void mouseReleased(MouseEvent arg0) { 
    // TODO Auto-generated method stub 

} 


@Override 
public void keyPressed(KeyEvent arg0) { 
    // TODO Auto-generated method stub 

     int code = arg0.getKeyCode(); 


     switch(code){ 
     case 37: 
      //West 

      velocity.y = 0; 
      velocity.x = -1 * speed; 
      personDefault = person_W[0]; 

      break; 
     case 38: 
      //North 

      velocity.x = 0; 
      velocity.y = -1 * speed; 
      personDefault = Toolkit.getDefaultToolkit().getImage("person_N-0.png"); 

      break; 
     case 39: 
      //East 
      velocity.y = 0; 
      velocity.x = speed; 
      moving = true; 
      personDefault = person_E[0]; 

      break; 
     case 40: 
      //South 
      velocity.x = 0; 
      velocity.y = speed; 
      personDefault = person_S[0]; 

      break; 




     } 
} 


@Override 
public void keyReleased(KeyEvent arg0) { 
    // TODO Auto-generated method stub 
    int code = arg0.getKeyCode(); 


     switch(code){ 
     case 37: 
      //Left 
      velocity.x = 0; 


      break; 
     case 38: 
      //Up 
      velocity.y = 0; 


      break; 
     case 39: 
      //Right 
      velocity.x = 0; 


      break; 
     case 40: 
      //Down 
      velocity.y = 0; 


      break; 
     } 

} 


@Override 
public void keyTyped(KeyEvent arg0) { 
    // TODO Auto-generated method stub 

} 

public void start() { 
    animator = new Thread(this); 
    animator.start(); 
    } 


@Override 
public void run() { 
    // TODO Auto-generated method stub 
    while (Thread.currentThread() == animator) { 
     // Display the next frame of animation. 
     ppos.x = pos.x; 
     ppos.y = pos.y; 
     pos.x = pos.x + velocity.x; 
     pos.y = pos.y + velocity.y; 
     repaint(); 

     // Delay for a while 
     try { 
     Thread.sleep(50); 
     } catch (InterruptedException e) { 
      System.out.println("Failed"); 
     break; 
     } 
} 

} 

public Image[] makeAnimation(int size, String name, String extension){ 
    Image[] imgAr = new Image[size]; 
    while(size>0){ 
     String src = name + size + "." + extension; 
     imgAr[size-1] = Toolkit.getDefaultToolkit().getImage(src); 
     size--; 
    } 
    return imgAr; 
} 


public void stop() { 
    animator = null; 
    } 
} 

我不知道什麼伸出馬上是錯誤或不兼容。如果任何人都可以專門幫助我使用此代碼,或者至少讓我知道如何開始將這些代碼與Web小程序兼容,那將非常值得讚賞。我已經看過java小程序文檔,但是這很令人困惑,尤其是我迄今爲止編寫了多少代碼,因爲我在代碼中刪除了特定的東西時遇到了很多麻煩。

爲了大家:

這是HTML:

<html> 
<head> 
</head> 
<body> 
<applet 
    alt="Aplikacja klienta" 
    code=DerpAHerp.class 
    archive='DerpAHerp.jar' 
    width=500 
    height=500></applet> 
</body> 
</html> 

錯誤:

當我加載網頁,我得到一個錯誤信息,如果我點擊它,我得到這個: http://puu.sh/FZmu

和控制檯說

CacheEn嘗試[http://XXXXXXXXXXXXXX.com/DerpAHerp.jar]:updateAvailable = true,lastModified = Thu Jul 05 00:50:39 EDT 2012,length = 16290

這是海報的朋友。他去睡覺了。 = \

編輯(從海報): 錯誤日誌中我得到的是如下: http://puu.sh/G6us 不知道,如果這有助於。

+1

您可以將您看到的錯誤添加到您的問題中嗎?小應用程序部署可能有點棘手,所以這將幫助我們回答你的問題。 – Zarkonnen

+1

在網絡瀏覽器中打開你的html頁面,看看applet是否被調用。如果沒有顯示,請打開Web瀏覽器的Java控制檯並查看錯誤堆棧是什麼。複製並粘貼您發佈的錯誤。 –

+1

也可以顯示你在html文件中寫的一些代碼來部署applet嗎? –

回答

0

您的applet沒有init -method,所以無法啓動。你應該閱讀關於小程序,因爲我們不能在這裏給教程。 Hiere is the official Oracle page to applets

你的html頁面引用了一個jar,但你的代碼是獨立於其他類的。你不需要使用罐子。

生成較小的輸出可能比較方便,但是對於測試類文件是很好的。

0

問題解決了:
我通過從頭開始創建一個新的項目,其次是字this教程字的找該方法Toolkit.getDefaultToolkit()的getImage()的Java小程序不支持,但該方法的getImage。 ()是。我交換了這些,然後將我的圖像加載代碼移動到init()方法,並發現我的程序在eclipse和chrome中都能正常工作。感謝您的所有建議和批評。我意識到我發佈的代碼在某些方面相當不成熟,下次發佈問題時我會確保記住您的意見。

相關問題