簡體   English   中英

嘗試為JLabel設置圖像圖標,但URL返回null

[英]Trying to set image icon for JLabel but URL returns null

嘗試為JLabel設置圖像圖標,但返回null URL?

我正在使用Netbeans,並在項目中包含background.png,但它仍返回null

import java.awt.image.BufferedImage;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;

public class NewClass extends JFrame {

    JLabel o = new JLabel();

    public NewClass() {
        createImage("background.png");
        add(o);
        setVisible(true);
        setSize(100, 100);
        setResizable(false);
    }

    public static void main(String[] args) {
        new NewClass();
    }

    public void createImage(String str) {
        URL url = getClass().getResource(str);
        try {
            BufferedImage image = ImageIO.read(url);
            o.setIcon(new ImageIcon(image));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

堆棧跟蹤中的錯誤詳細信息:

java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1388)
    at Test.NewClass.createImage(NewClass.java:32)
    at Test.NewClass.<init>(NewClass.java:18)
    at Test.NewClass.main(NewClass.java:26)

當我嘗試時,請您能不能確定為什么它不起作用

JLabel o = new JLabel(new ImageIcon("background.png"); 

它可以工作,但是如果background.png不存在,這很容易出錯? 謝謝

編輯:components-SplitPaneDemo2Project-這是netbeans項目的名稱,背景png直接在此文件夾內

位於此處:C:\\ Users \\ John \\ Documents \\ NetBeansProjects \\ components-SplitPaneDemo2Project

屏幕截圖:

在此處輸入圖片說明

我已經對您的代碼進行了一些更改測試,並且效果很好:

public class NewClass extends javax.swing.JFrame {

    JLabel o = new JLabel();

    public NewClass() {
        initComponents();

        createImage("background.png");
        add(o);
        setVisible(true);
        setSize(100, 100);
        setResizable(false);

        o.setLocation(20, 20);
        o.setSize(100, 25);
    }

    public void createImage(String str) {
        URL url = getClass().getResource(str);
        try {
            BufferedImage image = ImageIO.read(url);
            o.setIcon(new ImageIcon(image));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
....
}

在構造函數中,我已經為“ o”設置了位置和大小。

“ background.png”必須位於“ NewClass”的父包中。

在此處輸入圖片說明

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM