2012-07-31 59 views
1

我想爲Java應用程序設置圖標。我正在使用Eclipse。如何放置JFrame圖標

我不知道如果將圖標(和配置文件的方式)存儲到項目中的方式是最好的(我接受建議以瞭解最佳方式)。

無論如何,我試圖用這條線到我的擴展JFrame類:

setIconImage(Toolkit.getDefaultToolkit().getImage("img/icon.png")); 

但不工作:仍與咖啡杯圖標。

如何訪問圖標到包estacionBase.img?有沒有更好的地方來存放它?那麼我將如何訪問它?

enter image description here

+0

http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html請閱讀如何從類路徑加載資源。 – 2012-07-31 08:15:51

+2

非常好的問題。我敢打賭,許多人對這些東西感到困惑。 – brimborium 2012-07-31 08:22:38

回答

3

而是保存資源旁邊的源文件,在文件夾名爲類似res外保存src。將源與資源分開是個好主意。

至於該圖標,使用setIconImage(ImageIO.read("res/icon.png"));

但是:

如果你的圖標是一個jar裏面,你將不得不使用ImageIO.read(Classname.class.getResource("res/icon.png"));

,我認爲這是正確的,但照顧與你的相對路徑,如果它不工作,首先要檢查你的路徑相對於它的執行位置(無論是從.class目錄還是從某個階段的jar)。

+0

我應該把我的「res」文件夾放到src文件夾中,還是放在外面?如果我想讓圖標留在罐子裏而不是在外面,我的提議不是我的建議嗎? – 2012-07-31 08:18:44

+0

是的,如果你想讓你的圖標保存在jar文件中,你可以將res文件夾放在你的'src'文件夾中,我認爲你現在有這個文件夾。我會編輯我的答案以適應這一點。 – rtheunissen 2012-07-31 08:20:54

+0

雖然我會在外面推薦。通常你會擁有像src,bin,lib,res這樣的文件夾,這使得更新更容易。但這完全取決於你。 – rtheunissen 2012-07-31 08:22:11

1

爲保存問題:在您的項目中創建一個新的源文件夾,並將其稱爲res左右。然後你可以把你的資源放在那裏。由於res被標記爲源文件夾,它也會在你的jar文件夾中。

對於負載,可以使用

setIconImage(ImageIO.read("res/icon.png")); 

setIconImage(
    new ImageIcon(getClass().getResource("res/icon.png"), description).getImage() 
); 

當然,也確定有圖像在你的源代碼之間。大多數官方Java演示(例如here)都是這樣做的。它更緊湊。儘管如此,我不會將這種技術用於大型項目。它會變得很混亂。

+0

'ImageIcon'上需要'.getImage()'。 :-) – 2013-04-25 01:30:38

+1

@MichałRus你完全正確。感謝您的更正。 – brimborium 2013-04-25 08:59:58

0

嘗試把你的圖像轉換成第二個文件夾,如/ RES其他人建議,然後使用代碼:

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("path/to/icon.png")));
我想這對我的應用程序和它的工作每次。另外,儘量不要將圖像放入包中。