【问题标题】:I'm not able to display those images which were not present when i was "cleaning and building" project in netbeans当我在 netbeans 中“清理和构建”项目时,我无法显示那些不存在的图像
【发布时间】:2014-07-27 01:10:12
【问题描述】:

我的问题的背景 我在 netbeans IDE 7.1.2 平台上使用 java swings 创建一个项目 windows m/c。然后我在linux m/c(cent os)中执行在windows m/c上创建的jar文件。 在我的项目的一部分中,我需要在运行时显示一些图片。

问题说明

案例 1) 现在发生的事情是,在运行时,我通过 java 代码执行 cp(copy) 命令将这些图片从其他位置带到我的项目的 src 目录。 是的,我已经检查了这些图片是否已成功复制到 src 目录中。 之后,当我尝试在标签中显示这些图像时,没有显示图片。

所以我想知道为什么会这样。

案例 2) 在这个问题之后,我进行了更改,并在我的项目的 src 文件夹中导入了这些图片,然后在 windows m/c 上“清理和构建”项目,而不是在 linux m/c 上将它们引入运行时。然后当我执行linux m/c上的jar文件,图片显示在标签中。

所以我所做的唯一更改是在 Windows m/c 上“清理和构建”我的项目期间将图片包含在 src 目录中。 所以我不明白的是 为什么在第一种情况下没有显示图片。

我的问题和疑问 1)在文件和图片等资源的上下文中(在项目中使用,我在这里不是在谈论项目的源代码),创建jar文件时究竟会发生什么?在构建项目时,这些资源(文件和图片)是否也包含在 jar 中?

2) 为什么我会遇到这样的问题?(而且我还检查了这些图像文件的权限。它们在两种情况下都完全相同。)

我们将不胜感激您能提供的任何见解。

【问题讨论】:

    标签: java image swing netbeans


    【解决方案1】:

    所以我假设你正在做一些类似的事情

    label.setIcon(new ImageIcon("src/path/to/image"));
    

    BufferdImage img = ImageIO.read(new File("src/path/to/image"));
    

    或者更糟糕的是,使用绝对文件引用...

    Netbeans 会在项目构建时将你的 src 目录的内容添加到生成的 jar 文件中(不包括你的源文件;)),这改变了需要处理这些资源的方式,你可以不再处理就像它们是文件系统上的文件一样。

    一旦嵌入到您的应用程序上下文中(例如包含在您的 jar 文件中),它们就会成为通常所说的嵌入式资源。

    相反,您需要根据需要使用 Class#getResource 或 Class#getResourceAsStream,例如...

    label.setIcon(new ImageIcon(getClass().getResource("path/to/image")));
    

    更多细节后更新

    Image im=newImageIcon(this.getClass().getResource("/home/aman/Desktop/diya.jpg")).getImage();
    

    对于他的文件类型是错误的方法。这个文件是文件系统上的一个文件,而不是你应该使用更像......

    BufferedImage image = ImageIO.read(new File("/home/aman/Desktop/diya.jpg"));
    jLabel1.setIcon(new ImageIcon(image));
    

    注意,ImageIO.read 会抛出一个 IOException,预计会被捕获,这对于诊断丢失的文件或错误的图像格式很有用

    除非你之前改变了标签的可见状态,否则不需要调用setVisible,其实你反正是在设置标签不可见...

    【讨论】:

    • 我无法在评论中粘贴我的答案内容。所以我添加了我自己的答案。请看一下。
    • 感谢您的评论...现在我已经使用了-- BufferedImage image = ImageIO.read(new File("/home/aman/Desktop/diya.jpg")); jLabel1.setIcon(新 ImageIcon(图像));效果很好。
    猜你喜欢
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2020-03-22
    相关资源
    最近更新 更多