2014-09-24 81 views
-1

我看遍了所有的地方,但我仍然停留在如何找到要放入JPanel的圖像的目錄。圖像應該在哪裏?我點擊了我的圖片的屬性,它顯示位置:C:\Users\Joseph\Pictures\Background,圖片的名稱是random.jpg如何使用imageicon(Java GUI)將圖像添加到JPanel?

我想要的圖像添加到使用TabbedPane的一個標籤。這是我迄今爲止所做的,我無法做到。

JPanel flPanel = new JPanel(); 

flPanel.setLayout(new FlowLayout()); 

ImageIcon image = new ImageIcon(getClass().getResource("")); 
// Tried /Users/Joseph/Pictures/Background/random.jpg and doesn't work 

JLabel j1 = new JLabel(image); 

flPanel.add(j1); 

tabbedPane.add("Tab 2", flPanel); 

圖片是否應該與項目在同一個包文件中?還是應該在源文件中才能夠做到「random.jpg」?

+2

從鞦韆教程閱讀部分[如何使用圖標](http://docs.oracle.com/javase/tutorial /uiswing/components/icon.html)作爲一個工作示例。 – camickr 2014-09-24 03:10:54

+1

請一定回答後,不要破壞您自己的問題。 – 2014-09-24 07:12:00

+1

@TheodorosChatzigiannakis:FYI,他試圖用[從今天這個問題(http://stackoverflow.com/questions/26210236/why-is-my-fillpolygon-shape-looking-odd-java-gui再搞破壞問題)。我已通知網站管理員。我們將不得不看他。 – 2014-10-06 22:35:51

回答

2

如果你想要的形象提供給您在運行應用程序,那麼你應該考慮在確認圖像包括你的瓶子內,當你的應用程序建立。

從它的聲音,您使用的是NetBeans,你應該將圖像複製到目錄中src目錄中的項目之內。

然後,您應該能夠使用...

BufferedImage bi = ImageIO.read(getClass().getResource("/full/path/to/image/random.jpg")); 
ImageIcon image = new ImageIcon(bi); 

到圖像的路徑應該是你的項目中的完整路徑(從src目錄的情況下)。

也就是說,如果你放在圖像中的resources目錄src目錄中,那麼你可以使用/resources/random.jpg的路徑/文件名

看看Reading/Loading an Image更多細節

+0

我實際上在使用eclipse。它會在eclipse上以相同的方式工作嗎? – user3404854 2014-09-24 05:41:14

+0

Eclipse中文件的位置不同。而不是存儲在'src'目錄中,它們需要存儲在項目的資源目錄中(與src'相同的位置)幷包含在構建過​​程中。從運行時的角度來看查找資源的過程是相同的... – MadProgrammer 2014-09-24 05:43:26

+0

我似乎無法直接找到資源。它被標記爲?我看到src,bin,.settings文件,.classpath和.project。 – user3404854 2014-09-24 06:03:13

1

的getClass( ).getResource(...)只會獲取類路徑中的資源。

您可以使用ImageIO.read(文件)是這樣的:

BufferedImage bi = ImageIO.read(new File("C:\\Users\\Joseph\\Pictures\\Background\random.jpg")) 
ImageIcon image = new ImageIcon(bi); 
+0

我在哪裏粘貼你在上面顯示的代碼中顯示的代碼部分? – user3404854 2014-09-24 06:14:59

+0

替換行ImageIcon image = new ImageIcon(getClass()。getResource(「」)); – DiogoSantana 2014-09-24 06:15:59

+0

這有一個異常捕獲並嘗試。它會是什麼? – user3404854 2014-09-24 06:55:54