2013-05-28 134 views
2

我NetBeans上做了一個JavaFX應用程序,我把這段代碼爲圖標設置窗口如何將圖標設置爲JavaFX應用程序的窗口?

primaryStage.getIcons().add(new Image("file:sicadcam.png"));

,當我運行從NetBeans中的項目,它的工作原理確定:出現圖標在窗口的左上角和任務欄中。該圖像位於項目的根目錄中。

當我清理並構建項目時,它會生成兩個安裝程序:一個exe和一個msi;當我安裝應用程序並打開它時,窗口沒有圖標sicadcam.png,它具有默認的Java標誌圖標。

如何或在哪裏可以設置圖像的路徑,以便在安裝應用程序時出現圖標。

+0

我面臨同樣的問題,所以請你能告訴我如何通過JavaFX設置任務欄圖標嗎? – vijayk

回答

2

這只是對問題的部分回答,因爲我一直無法生成一個自包含的軟件包,該軟件包在Windows任務欄中顯示已安裝應用程序的圖標。我可能錯過了一個步驟,出現環境問題,或者自包含應用程序的圖標配置可能稍微有些問題,並且可能在以後的版本中得到修復。測試是:jdk7u21,NetBeans 7.3,Win7,InnoSetup。

從資源而不是文件中獲取圖標圖像。

例如,如果你把你的應用程序類的源目錄中的圖片:

new Image(MyApplication.class.getResource("sicadcam.png").toExternalForm()); 

已安裝的應用程序,這將只設置在屏幕的左上角顯示的圖標。要設置任務欄,桌面等的圖標,請按照Self-Contained Packaging section of the JavaFX Deployment Guide中的說明進行操作。

例如,以便得到有關我的Windows 7安裝程序爲我的自包含的應用程序的圖標,我需要放置圖標在<netbeansprojectdir>/package/windows/<myappname>.ico(需要爲安裝程序打包一個.ICO把它撿起來)文件並確保我的ant路徑配置正確,詳見How to change JavaFx native Bundle exe icon(希望在以後的NetBeans/JavaFX版本中不需要手動配置ant)。


從Oracle下載Ensemble sample application,看到包目錄如何針對特定平臺的圖標放置在那裏。不幸的是,當我嘗試從命令行構建Ensemble時,當Ensemble被安裝並作爲自包含應用程序執行時,我也無法讓Windows 7在任務欄中使用Ensemble圖標。


確保您的構建系統將您的圖標複製到包含您的應用程序的jar文件中。要檢查這一點,切換到已安裝應用程序的應用程序目錄並運行jar tvf <yourappjar>.jar =>它應該在jar中顯示圖標資源文件的位置。

+0

我將代碼改爲' primaryStage.getIcons()。add(new Image(Gansito.class.getResource(「sicadcam.png」)。toExternalForm()));'但是我得到消息'Exception in Application start method java.lang.reflect.InvocationTargetException ' – Adrian

+0

@Adrian我試了一下,並用我的發現更新了我的答案 - 我沒有得到一個InvocationTargetException,所以我不能幫助你 - 但是我也沒有設法實現你想要的圖標的結果任務欄:-( – jewelsea

+1

@ Jewelsea ..我面臨同樣的問題,所以請你可以告訴我如何通過JavaFX設置任務欄圖標? – vijayk

0

,您可以在使用的getClass()。的getResourceAsStream(「path.png」) 中的getResourceAsStream(「路徑」)是返回一個輸入STRAM因爲你需要它,例如用於圖標 贏得任何文件的路徑。 getIcons()。add(new Image(getClass()。getResourceAsStream(「path。png「))); 如果你正在做一個jar文件運行時出現異常

相關問題