2014-03-29 16 views
1

我嘗試將圖像添加到類目錄時嘗試隔離問題的位置。 (這樣做,當我作爲可運行JAR導出時,圖像包含在包中)。Java Swing:無法使用getResource加載圖像

因此,我已經將strawberry.jpg文件放在'C:\ Users \ sean \ workspace \ myApps \ src \ testing' 您能否提醒我缺少什麼? 謝謝!

package testing; 

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

public class IconTest { 

    public static void main(String[] arguments) { 

     JFrame frame1 = new JFrame(); 
     frame1.setTitle("Frame1"); 
     frame1.setSize(500, 500); 
     frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     FlowLayout flo = new FlowLayout(); 
     frame1.setLayout(flo); 

     JLabel label1 = new JLabel(new ImageIcon(
      IconTest.class.getResource("strawberry.jpg"))); 
     frame1.add(label1); 
     frame1.setVisible(true); 
    } 
} 

回答

1

我會用SomeClass.class.getResourceAsStream("...")如下面的例子:

public static void main(String[] arguments) throws IOException { 

    JFrame frame1 = new JFrame(); 
    frame1.setTitle("Frame1"); 
    frame1.setSize(500, 500); 
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    FlowLayout flo = new FlowLayout(); 
    frame1.setLayout(flo); 

    InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg"); 
    Image image = ImageIO.read(resourceAsStream); 

    JLabel label1 = new JLabel(new ImageIcon(image)); 
    frame1.add(label1); 
    frame1.setVisible(true); 
} 
+0

謝謝帕特里克 - 它的作品!雖然我確實將目錄作爲上述評論修改爲Kennet。 – Synapse

+0

嗨帕特里克。雖然代碼在Eclipse中工作,但導出到Runnable Jar文件並執行時不產生任何結果 - 無窗口和圖形。使用您在上面建議的原則可以看到另一個應用程序的結果。有任何想法嗎?謝謝! – Synapse

+0

我知道這個問題是在以前問過的,但是當我在過去完成這個工作時,我總是將文件如「stawberry.jpg」包含在與「IconTest.java」相同的目錄中。我這樣做是爲了將它包含在jar中。 – patrick

1

把圖像文件在你的編譯的類所在的目錄,並通過「/」之前加入改變侑代碼路徑文件名稱:

JLabel label1 = new JLabel(new ImageIcon(
     IconTest.class.getResource("/strawberry.jpg"))); 

在類路徑中搜索資源。

+0

謝謝Kennet。我試過了,但仍然在調試日誌中收到「未找到源」。我試着將strawberry.jpg文件複製到'C:\ Users \ sean \ workspace \ SM Apps \ bin \ testing'中。 – Synapse

+0

只是設法讓下面的代碼工作,雖然上面修改過的目錄。 :-) – Synapse