如何让资源在runnable jar中运行?

时间:2014-01-17 18:10:36

标签: java swing jframe getresource

我的Jframe中有一个图像图标。我正在使用图像。当我导出到Runnable Jar时。图像不显示。

String iPath = "res/images/Mobile.png";
JLayeredPane layeredPane = new JLayeredPane();
 layeredPane.setBounds(0, 0, 315, 610);
 InputStream stream = (InputStream) getClass().getResourceAsStream(iPath);
 JLabel mobileImageLabel;
 mobileImageLabel = new JLabel(new ImageIcon(iPath));

          //mobileImageLabel = new JLabel(new ImageIcon(ImageIO.read(stream)));
       // mobileImageLabel = new JLabel(new ImageIcon(AppFrame.class.getResource(iPath)));

                    mobileImageLabel.setBounds(0, 0, 315, 610);
                    mobileImageLabel.setVisible(true);
                    layeredPane.add(mobileImageLabel, Integer.valueOf(0));
我用google搜索&找到了getResourceAsStream方法。但它似乎抛出了NullPointerException。

所以帮助我正确的方向:)

感谢您的帮助......

注意 我试过的方法已被评论

2 个答案:

答案 0 :(得分:0)

要在按钮中设置图像,我这样做了:

JButton yourButton = new JButton("text button");
        try {
            yourButton.setIcon(new ImageIcon(ImageIO.read(getClass().getResourceAsStream("/images/icon-for-your-button.png"))));
        } catch (IOException e3) {
            // TODO Auto-generated catch block
            e3.printStackTrace();
        }

您必须在项目中包含这样的图像:

enter image description here

在您的情况下,我认为答案是:

new ImageIcon(ImageIO.read(getClass().getResourceAsStream("/images/icon-for-your-button.png")))

答案 1 :(得分:0)

尝试替换

String iPath = "res/images/Mobile.png";

通过

String iPath = "C:/..../res/images/Mobile.png";

每当您处理图像时,请尝试为图像添加完整路径。因此,当您生成.jar文件并尝试从不同的地方运行它时(可能您希望jar应该从桌面运行),您将获得所有图像。