2010-04-14 58 views
0

我一直試圖在運行時間內動態加載圖像時間最長,並且查看了本網站上的其他帖子,並且尚未找到完全相同的東西將工作。我正在嘗試在我的GUI運行時(在運行時創建它)加載圖像並嘗試了各種各樣的東西。現在,我發現創建圖像的最簡單方法是使用JLabel併爲其添加ImageIcon。這一直奏效,但是當我在GUI運行之後加載它時,它失敗了,說有一個「NullPointerException」。這裏是我的代碼至今:如何在java中運行時動態添加圖像

p = Runtime.getRuntime().exec("python C:\\FaceVACS\\roc.py " + "C:/FaceVACS/OutputCMC_" + target + ".txt " + "C:/FaceVACS/ROC_" + target + ".png"); 
Icon graph = new ImageIcon("C:\\FaceVACS\\OutputCMC_" + target + ".png"); 
roc_image.setIcon(graph); 
panel.add(roc_image); 
panel.revalidate(); 
gui.frame.pack(); 

我試過panel.validate(),panel.revalidate(),我也試着gui.getRootPane(),但我似乎無法找到任何可以工作的東西。

任何想法都會有幫助!謝謝

回答

2

getRuntime().exec是用於啓動外部程序。爲了簡單加載一個文件在你的Java應用程序中使用,你可以簡單地像對待其他文件一樣對待它。事實上,如果您使用Swing,則ImageIcon構造函數會將包含文件路徑的String作爲參數。

How to add an image to a JPanel?

上述問題,介紹瞭如何將圖像添加到一個JPanel,這可以在運行時通過一個事件處理程序來完成。

+0

我是那種給上下文爲什麼我添加的圖像與p.Runtime.getRuntime()EXEC()...這只是運行一個python腳本,節省出來的圖像我期待發布。除了生成它外,它與圖像無關。 – Brandon 2010-04-14 22:18:46

0

您還可以使用標籤來顯示圖像。這tutorial告訴你如何。

+0

roc_image是一個標籤...因此它已被添加到標籤。 – Brandon 2010-04-14 22:41:06

2

,這只是運行一個python腳本,節省出來的圖像我期待張貼

聽起來就像是問題是代碼試圖加載圖像的python腳本完成創建映像前。嘗試:

Process p = Runtime.getRuntime().exec("..."); 
p.waitFor(); 
Icon icon = new ImageIcon(...); 
+0

+1 for'waitFor'儘管整個處理(調用腳本並等待結果)應該在單獨的線程中運行。否則,它會凍結UI。之後它應該調用'SwingUtilities.invokeLater'來更新UI – OscarRyz 2010-04-15 00:09:37