JLabelの中に表示される「ImageIO.read」と読取画像パス

MELS:

完全なローカルパス(C:\\Users\\workspace\\myproject\\src\\eclipse\\mainclass\\icons\\my-image.png)は罰金を動作しますが、以下のコードのように短いパスを使用して、例外を提供しますjavax.imageio.IIOException: Can't read input file!

何が私がここに間違っているのでしょうか?

    JLabel lab_h1 = new JLabel();
    BufferedImage img = null;

    try {
        img = ImageIO.read(new File("icons/my-image.png"));

    } catch (IOException e) {
        e.printStackTrace();
    }

    Image dimg = img.getScaledInstance(140, 40,Image.SCALE_SMOOTH);

    lab_h1.setIcon(new ImageIcon(dimg));
マット:

あなたはそれはあなたがプログラムを実行する場所からの相対に見えるの相対パスでファイルを開こうとすると、問題は、あなたが、持っています。代わりに正しいパスを得ることを望んで、あなたは、リソースを使用することができます。

BufferedImage img = ImageIO.read( 
       YourClassName.class.getResource(
             "/mainclass/icons/my-image.png"
       ) 
 );

私はあなたのパッケージ構造であるかわからないので、あなたがパスをいじくり回す必要があるかもしれないと思います。私はまた、日食があなたのソースフォルダにあるリソースファイルをバンドルすることを想定しています。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=394626&siteId=1