2011-06-14 36 views
0

我做了一類叫做樹這個方法:不能使打印Methord另一個類,並調用它的主類

public void printTree(Graphics g, int x, int y) { 
MediaTracker mt = new MediaTracker(this); 
tree = getImage(getCodeBase(), "tree.png"); 
mt.addImage(tree, 0); 
g.drawImage(tree, x, y, this); 

我嘗試在paint方法來使用它在主:

Tree tree = new Tree(); 
    tree.printTree(g, 60, 50); 

我沒有錯誤,但是當我運行該應用程序我得到這些錯誤:

Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException 
at java.applet.Applet.getCodeBase(Unknown Source) 
at Tree.printTree(Tree.java:12) 
at Main.paint(Main.java:146) 
at Main.update(Main.java:187) 
at sun.awt.RepaintArea.updateComponent(Unknown Source) 
at sun.awt.RepaintArea.paint(Unknown Source) 
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$000(Unknown Source) 
at java.awt.EventQueue$1.run(Unknown Source) 
at java.awt.EventQueue$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

如果有人能幫助我,我會版本很高興。

+0

我們可以看到'getCodeBase()'的內容嗎? – mre 2011-06-14 17:17:53

+0

這就是Java文檔告訴我:URL java.applet.Applet.getCodeBase() getCodeBase 公共URL getCodeBase() 獲得基URL。這是包含此applet的目錄的URL。 返回: 包含此applet的目錄的基本URL。 另請參見: getDocumentBase() – Derek 2011-06-14 17:21:50

回答

1

小程序在AppletContext 運行是否由小程序查看 或瀏覽器頁面中提供。如果您從主要方法運行 小程序或將 小程序加載到應用程序中,則 將不是AppletContext,並且getCodeBase 將返回空值。在這種情況下,您可以使用 方法使用替代/其他圖像加載 方法。

Reference

用另一種方式來import a picture into an applet

+0

我在最後使用了ImageIcon,像魅力一樣工作。謝謝。 – Derek 2011-06-14 19:35:38

1

您嘗試使用的對象爲null。使用調試器並找出哪一個,並找出如何確保它不爲空,或修復使其爲空的錯誤。

0

「我沒有錯誤,但是當我運行該應用程序我得到這些錯誤:」

你可能意味着你沒有編譯器錯誤。 NullPointerException是一個相當常見但嚴重的錯誤。在使用它們之前,您必須初始化這些對象。

+0

我以爲我在做這件事時,我用:樹樹=新樹(); – Derek 2011-06-14 17:23:03

+0

但是新的Tree(),可能會創建一個新的空樹實例。 – 2011-06-14 17:25:02

+0

@Deza:調用getCodeBase()方法時引發異常。閱讀我的答案。嘗試以不同的方式添加圖片,並親自查看,如果是這樣的話。 – Shef 2011-06-14 17:25:55

相關問題