2012-07-23 56 views
0

我想为我的java类做最后的项目。我正在尝试使用.png图片并将其用作可添加到我的JFrame中的组件。但是,当我尝试这样做时,它会引发异常并执行catch语句中的内容。我不明白为什么它会这样做。我在与.java文件相同的文件夹中有.png文件。图像作为组件问题

package InventoryApp; 

import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JLabel; 

/** 
* 
* @author Curtis 
*/ 
public class FinalProject extends DFrame 
{ 
//main method 
public static void main(String[] args) 
{ 
    start(); 
} 

//building splash screen 

public static void start() 
{ DFrame splashFrame = new DFrame(); 
    try 
    { 
    BufferedImage myPicture = ImageIO.read(new File("logo.png")); 
    JLabel picLabel = new JLabel(new ImageIcon(myPicture)); 
    splashFrame.add(picLabel); 
    } 
    catch(IOException g) 
    { 
     JLabel error = new JLabel("Picture Could Not Be Found"); 
     splashFrame.add(error); 
    } 


    JButton create = new JButton("Click to Create Item List"); 
    JButton view = new JButton("Click to View Item List"); 
    splashFrame.add(create); 
    splashFrame.add(view); 


} 

} 
+0

什么是例外? – MadProgrammer 2012-07-23 02:10:04

+0

你能否详细说明我如何解决这个问题?当我试图抓取文件时,我认为它抛出了异常。 – 2012-07-23 02:13:51

+0

在异常块中,您需要打印异常。基本上你可以调用'g.dumpStackTrace()'来获得一个快速和脏的转储 – MadProgrammer 2012-07-23 02:17:49

回答

1

当你创建一个没有指定路径的File对象,它假定程序从启动目录,目录中的当前类文件是在你可能想改用FinalProject.class.getResource()

BufferedImage myPicture = ImageIO.read(FinalProject.class.getResource("logo.png")); 
+0

你能帮我这个代码吗?我得到一个错误BufferedImage myPicture = ImageIO.read(new File(FinalProject.class.getResource(“logo.png”))); – 2012-07-23 02:17:04

+1

对不起,我的意思是你可以完全省略'File',并使用带有URL的'ImageIO.read()'版本。 – 2012-07-23 02:18:46

+0

感谢您的协助。 – 2012-07-23 02:35:16