JLabel不显示图像

时间:2013-02-01 10:00:08

标签: java image jlabel

我不确定问题出在哪里。它在路上吗?尽管代码语法中根本没有错误,但图像未显示。我应该提供整个路径还是只将图像放在目录中并调用其名称?谢谢。

public class NetworkingGame {

private JFrame jfrm;

NetworkingGame(){
    jfrm = new JFrame("Angry Painters");
    jfrm.setSize(800, 480);
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jfrm.setVisible(true);

}// end of constructor

public void ImageLoading(){
    ImageIcon i = new ImageIcon("C:/Users/TOSHIBA/Documents/NetBeansProjects/NetworkingGame/build/classes/angry-painters.jpeg");
    JLabel jl = new JLabel(i);
    jfrm.add(jl);
}

public static void main(String[] args) throws Exception{

    SwingUtilities.invokeLater(new Runnable(){

        @Override
        public void run(){

            NetworkingGame ng = new NetworkingGame();
            ng.ImageLoading();
        } // end of run method
    }); // end of Runnable

   }//end of main method
}//end of class NetworkingGame

4 个答案:

答案 0 :(得分:3)

请勿将文件路径用作图标位置,因为这只适用于您的计算机。你真的不能指望世界上所有的机器都有C:/ Users / TOSHIBA ... angry-painters.jpeg在正确的位置!

将文件复制到您使用的源代码(.java)类旁边,然后调用

 new ImageIcon(getClass().getResource("angry-painters.jpeg"));

构建器应将图像资源复制到类文件夹本身。

答案 1 :(得分:2)

尝试使用类似这样的路径:

jLabel1.setIcon(new ImageIcon("c:\\Users\\xyz\\Documents\\NetBeansProjects\\game\\src\\images.jpg"));

<强>更新

如果dis也不起作用,那么

    jLabel.setIcon(new ImageIcon(getClass().getResource("/image.jpg")));
    jLabel.setText("jLabel");

应该。image.jpg应该在你的项目文件夹中。

答案 2 :(得分:1)

我认为你的代码不喜欢你对图像进行绑定的方式。

假设您将图像/图标放在源文件夹中

ImageIcon i=new javax.swing.ImageIcon(getClass().getResource("myimage.jpeg"))

或者如果您在源文件夹中创建文件夹

InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/images/image.jpg");
BufferedImage bufferedImage=ImageIO.read(stream);
ImageIcon icon= new ImageIcon(bufferedImage);

答案 3 :(得分:0)

在 IntellijIdea 中。 2021 就我而言,它只是没有读取图像文件。 要解决这个问题:

1. 在项目根目录创建 res 文件夹('src 的文件夹兄弟)

2. 在 File->Project Structure->artifacts 中通过 + , -

处理工件

3. File->Project Structure->artifacts->output layout tab 将最终 jar 的结构设为“res”文件夹、应用程序根包文件夹(比如“com”)和“META-INF”文件夹。用您的应用程序/输出文件夹中的内容和1.步骤“res”中提到的“res”内容填写它们。

4. 然后在“项目结构”“模块”中右键单击“res”并将其标记为资源。

5. 像这样声明图像:

ImageIcon loadingLcl = new ImageIcon(this.getClass().getResource("/res/32.gif")); 在放入 JLabel 之前。

此外,最好在初始化应用程序时读取一次图像。否则有时它会抛出 IOException。因此,如果可能,请在开始时处理它。就像他们在游戏制作中所做的那样。