2015-04-21 35 views
0

a simple png image巴紐圖標在一個JFrame窗口

import java.awt.*; 
import javax.swing.*; 

public class Program { 
public static JButton button; 
public static void main(String args[]){ 
    JFrame win=new JFrame("title"); 
    win.setVisible(true); 
    win.setSize(500,500); 
    win.setLayout(new FlowLayout()); 
    win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    ImageIcon i=new ImageIcon("icon.png"); 
    button=new JButton("hello",i); 
    win.add(button); 
    button.setToolTipText("click me"); 

} 
} 

當我運行該文件不加載,我剛上車的按鈕,但沒有圖像文本「Hello」。
(此圖片從http://icons.iconarchive.com/icons/iynque/flat-ios7-style-documents/512/png-icon.png下載)

該圖像存儲在項目的src文件中。

+0

圖像存儲在與源/項目的關係 – MadProgrammer

+0

我同意,PNG圖像支持,所以icon.png必須在錯誤的位置。 –

+0

您的圖標必須位於類路徑或類路徑的相對路徑中。 如果將它構建到jar文件中,圖標位於jar內的什麼位置? –

回答

0

試試這個: ImageIcon i = new ImageIcon(「src/icon.png」);

+1

這在部署時幾乎肯定會失敗。應用程序資源在部署時將成爲嵌入式資源,所以現在開始訪問它們是明智的做法。 [tag:embedded-resource]必須通過URL而不是文件訪問。請參閱[信息。頁面爲嵌入式資源](http://stackoverflow.com/tags/embedded-resource/info)如何形成的URL。 –

3

圖片不應該在src而是在主應用程序目錄中,通常位於以上級別。因此,移動你的圖標或更改代碼:

ImageIcon i=new ImageIcon("src/icon.png");

你應該考慮通過getResource()將它添加到你的資源(所以它會被放在罐子)開放。示例中的下一個問題是,在調整大小或其他操作刷新窗口之前,它不會顯示。在末尾加上這一行:

win.pack();

或者其他方法,將刷新窗口內容。

0
getClass().getResource("icon.png") 

將做到這一點,如果你的圖像文件是Program.java的同一目錄下,並在編譯時,它確實包裝到同一目錄,其中Program.class是。