将项目导出到jar文件时,如何包含我的图标

时间:2012-12-19 02:10:21

标签: java swing jar embedded-resource

我开发了一个桌面应用程序。问题是当我将应用程序导出到jar文件时,图标未显示在应用程序中。当我从Eclipse运行它时,所有图标都显示在那里。

我的项目中的一个例子:

package net.ebank.gui;

import java.awt.*;
import javax.swing.*;


public class EBank extends JFrame {

    protected Start s;


    public EBank() {

        setTitle("Welcome To EBank");

        setBackground(Color.white);


        Image img = new ImageIcon("../EBank/res/bank.jpg").getImage();
        this.setIconImage(img);

        /*"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
        "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"*/

        setVisible(false);

        setSize(1350,700);

        setDefaultCloseOperation(this.EXIT_ON_CLOSE);

        try {

            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException e) {

            // TODO Auto-generated catch block

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

            // TODO Auto-generated catch block

            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block

            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        s= new Start(this);

        s.setLocation(getWidth()/2, getHeight()/4);


    }

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

}

3 个答案:

答案 0 :(得分:6)

使用Class#getResource()而不是将相对路径传递给ImageIcon构造函数。

还要确保图像文件实际上是生成的JAR的一部分。

答案 1 :(得分:5)

要使其正常工作,请按以下步骤操作:

  • 在项目浏览器树中右键单击您的项目。
  • 转到新 - >源文件夹,然后提供任何名称到源 文件夹中。
  • 现在手动将您的资料添加到您创建的源文件夹中, 就像你想要添加图像一样,然后通过手动创建一个新文件夹 通过文件系统访问此源文件夹。
  • 将此新文件夹命名为图像,并将图像复制到此文件夹。
  • 现在回到您的Eclipse IDE并从中刷新您的项目 Project Explorer,右键单击您的项目,您可以在这里 刷新后立即查看您添加的内容。
  • 现在,为了访问,比如任何图像,您将使用。

    getClass().getResource("/images/yourImageName.extension");
    

将返回一个URL对象。在这种情况下,请记住第一个正斜杠,因为在源文件夹中的任何内容都可以通过简单的方式在此帮助下访问。现在,当您运行项目时,此源文件夹的内容将自动添加到bin文件夹中,当您创建 Runnable Jar 时,源文件夹中的内容可以按原样访问。

在这个链接上,我试图用图像解释how to add Images to your Eclipse Project

答案 2 :(得分:4)

您可以修复JAR文件的布局,这可能只是像在Eclipse中那样相应地排列文件夹,或者只是像Matt Ball所说的那样,使用Class#getResourceClass#getResourceAsStream