2013-05-02 120 views
0

我遇到了這本書中簡單的示例代碼的問題。它應該在一個窗口(北部和南部的標籤)中一個在另一個之上代表相同的圖像2次。當我運行它時,它顯示this而不是this(我很抱歉沒有切割圖像或調整它們的大小)以下是我的代碼。我在Ubuntu 13.04上運行Eclipse Juno。爲什麼這個簡單的代碼不起作用

package gui; 
import java.awt.BorderLayout; 
import javax.swing.*; 

public class Gui { 


    public static void main(String[] args) { 

     JLabel northLabel = new JLabel ("North"); 

     ImageIcon labelIcon = new ImageIcon ("GUItip.gif"); 

     JLabel centerLabel = new JLabel (labelIcon); 
     JLabel southLabel = new JLabel (labelIcon); 

     southLabel.setText("South"); 
     JFrame application = new JFrame(); 

     application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

     application.add(northLabel, BorderLayout.NORTH); 
     application.add(centerLabel, BorderLayout.CENTER); 
     application.add(southLabel, BorderLayout.SOUTH); 

     application.setSize(300, 300); 
     application.setVisible(true); 


    } 

} 
+2

您可能不會在正確的位置查找圖像。嘗試使用圖像的絕對路徑。要麼或找出你的用戶目錄是在哪裏,並把圖像放在那裏。 – 2013-05-02 23:58:14

+3

或者如果圖像嵌入到應用程序中,使用'Gui.class.getResource(「GUItip.gif」);'而不是 - 使用ImageIO',它會拋出更有意義的異常... – MadProgrammer 2013-05-03 00:00:59

+0

這不是硬編碼絕對路徑的良好做法。將圖像放置在項目內的某個位置,並將相對路徑提供給根文件夾路徑。 – 2013-05-03 00:01:51

回答

2

您需要專注於以下語句:

ImageIcon labelIcon = new ImageIcon ("GUItip.gif"); 

當啓動新的ImageIcon ..它在默認情況下,即在搜索文件夾執行所提供的地址,在這種情況下「 GUItip.gif「應在工作區/用戶目錄中進行搜索。

一個解決方案是在您的工作區(程序執行)文件夾中提供可用的GUItip.gif圖像。 另一種解決方案是提供絕對路徑。

C:\USER\Workspace\project_name\GUItip.gif 

雖然更好的方法是創建一個特定的文件夾,您可以在其中保存項目中使用的所有圖像。用絕對路徑創建一個最終的靜態字符串變量到您的文件夾。現在,該項目中的任何程序員都很容易知道在哪裏尋找圖像。 有很好的方法來使用這種映射..通過XML在開始時加載..通過資源等,但這是一個完全不同的話題。

0

圖像可能未正確加載。嘗試使用try/catch塊來查看是否是這種情況。

例:

Image img; 

    File f = new File(//image url); 
    try { 
     img = ImageIO.read(f); 
    } catch (IOException e) { 
     String curr_dir = System.getProperty("user.dir"); 
     throw new IllegalArgumentException("Image could not be found from " + curr_dir); 
    } 
    ImageIcon labelIcon = new ImageIcon(img); 
+0

謝謝你們。我只需要使用完整的路徑名稱,而不是像書中那樣複製它。但是我確實把圖像放在了項目目錄中(就像老師告訴我的那樣)。無論如何,再次感謝你。 – Deveram 2013-05-03 00:28:52

相關問題