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);


}

}
4

1 に答える 1

1

Fileパスを指定せずにオブジェクトを作成すると、現在のクラス ファイルがあるディレクトリではなく、プログラムが起動されたディレクトリと見なされますFinalProject.class.getResource()

BufferedImage myPicture = ImageIO.read(FinalProject.class.getResource("logo.png"));
于 2012-07-23T02:14:22.073 に答える