2017-08-13 88 views
-1
public static void main(String [] args) 
{ 
    ImageIcon aLogo = new ImageIcon("Logo0.gif"); 
    JLabel aLabel = new JLabel(aLogo); 
    JPanel aPanel = new JPanel(); 
    JFrame aFrame = new JFrame(); 
    aFrame.setSize(740, 320); 
    aFrame.add(aPanel); 
    aFrame.setVisible(true); 
    aPanel.add(aLabel); 
    aLabel.setIcon(aLogo); 
} 

這裏我試圖創建一個JFrame來顯示圖像。但是,當我運行此代碼時,JFrame上沒有圖像,我相信這是因爲文件位置。圖像「logo0.gif」應該在哪裏才能使用此代碼?

+0

您的代碼假定圖像與類文件位於同一目錄中。閱讀Swing教程中的[如何使用圖標]部分(http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html)以獲得更好的閱讀圖像的方式,以便您可以放置在你的類路徑上的任何地方。 – camickr

+0

此外,變量名稱不應以大寫字符開頭。這是可以在任何Java書籍或教程中找到的基本Java編碼約定。如果您希望人們花時間閱讀您的代碼,請遵循慣例。 – camickr

+0

圖像文件與類文件位於同一目錄中。 –

回答

0
aFrame.setVisible(true); 
aPanel.add(aLabel); 
aLabel.setIcon(aLogo); 

組件應該被添加到該幀之前的幀是由可見,否則佈局管理器不被調用,因此分量的大小是(0,0),這意味着沒有要繪製。

另外,閱讀教程並下載演示代碼,以更好地構建您的課堂,以便在事件調度線程(EDT)上正確創建組件。請閱讀上面關於Concurrency in Swing的教程中的部分,以獲取有關EDT及其重要性的更多信息。

+0

我把「aFrame.setVisible(true);」添加完所有內容後仍然無效。我將類文件與圖像文件一起復制並粘貼到圖像顯示的空文件夾中,我不明白爲什麼,但現在它的工作正常,所以問題解決了,我猜! –