public void paintComponent(Graphics g) {
Image frstWinBackg = new ImageIcon("new.jpg").getImage();
g.drawImage(frstWinBackg, 0, 0, getWidth(), getHeight(), this);
}
我通过上面的代码将图像文件绘制为JPanel背景。当我制作项目的可执行jar文件时,我必须将该图像文件保存在同一文件夹中。有没有办法在jar文件中压缩这个图像文件,因为我认为提供图像文件和jar文件不是一个好主意。
答案 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等)。