不希望将jar文件保留在同一文件夹中

时间:2017-01-16 17:29:50

标签: java swing

public void paintComponent(Graphics g) {
    Image frstWinBackg = new ImageIcon("new.jpg").getImage();
    g.drawImage(frstWinBackg, 0, 0, getWidth(), getHeight(), this);
}

我通过上面的代码将图像文件绘制为JPanel背景。当我制作项目的可执行jar文件时,我必须将该图像文件保存在同一文件夹中。有没有办法在jar文件中压缩这个图像文件,因为我认为提供图像文件和jar文件不是一个好主意。

2 个答案:

答案 0 :(得分:2)

public void paintComponent(Graphics g) {
    Image frstWinBackg = new ImageIcon("new.jpg").getImage();
    g.drawImage(frstWinBackg, 0, 0, getWidth(), getHeight(), this);
}

在此代码中,图像文件在 paintComponent()方法中读取。由于 paintComponent()方法可以在一秒钟内多次调用,因此每次都会搜索图像文件。因此,要使图像显示,图像文件必须保存在jar文件的同一文件夹中。

如果我们不想在外部提供图像文件,我们必须在构造函数中读取图像并通过 paintComponent()方法绘制它。

e.g。在构造函数中,要读取图像文件:

Image img = ImageIO.read(getClass().getResource("resources/new.jpg"));

然后, paintComponent()方法将是:

public void paintComponent(Graphics g) {
    g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
    g.drawImage(img, 0, 0, this);
}

答案 1 :(得分:1)

您可以将图像作为资源存储在JAR中。这个tutorial解释了如何做到这一点。当你阅读它时,我认为你可以将它用于你的构建系统(Maven,Gradle等)。