2011-04-08 64 views
1

當我嘗試創建JLabel時,它完美地顯示文本,並且放置在容器內,但如果我嘗試將圖像添加到標籤,則不會顯示任何內容。如何使用JLabels?

ImageIcon icon = new ImageIcon("../media/link_walk.png", "hh"); 
JLabel j = new JLabel("hello"); 
j.setIcon(icon); 
p.add(j); 
+0

面板p是否有佈局管理器? – janhink 2011-04-08 20:15:39

+0

可能的重複[如何設置JLabel的背景顏色?](http://stackoverflow.com/questions/2380314/how-do-i-set-a-jlabels-background-color) – trashgod 2011-04-08 20:17:32

+0

是的,這些東西幫助與背景顏色,但它仍然拒絕顯示圖像。 – 2011-04-08 20:18:31

回答

1

的JLabel不是不透明默認情況下,除非你讓他們通過setOpaque(真)的不透明使背景色彩的變化不會被看到。此外,JLabel的首選大小將取決於它所包含的文本。

+1

另請參閱[如何設置JLabel的背景色?](http://stackoverflow.com/questions/2380314)。 – trashgod 2011-04-08 20:16:43

+0

@trash:謝謝你的鏈接。這似乎是一個相當普遍的問題。 – 2011-04-08 20:18:46

+1

這是一個受歡迎的副本,也是['opaque'](http://java.sun.com/products/jfc/tsc/articles/painting/#props)屬性冰山的一角。 :-) – trashgod 2011-04-08 20:23:19

3

如果你的應用程序。在Jar文件中,圖像是應用程序資源,它也將位於Jar文件中。

ImageIcon構造函數接受String假設String代表文件路徑/名稱。 A File對象無法建立到Jar中的資源。對於Jar中的資源,有必要通過URL訪問它們。

爲了得到一個URL的東西在一個罐子裏,使用類似..

URL urlToImage = this.getClass().getResource("/media/link_walk.png"); 
// Check the URL! 
System.out.println("urlToImage is " + urlToImage); 

然後使用ImageIcon構造函數接受一個URL