当我打包它是一个罐子时,我无法显示我的ImagePanel。当我从Eclipse运行项目时它显示得很好。这是创建ImagePanel的行:
ImagePanel panel = new ImagePanel(this.getClass().getClassLoader()
.getResource("edu/luc/tictactoe/gui/resources/images/UIMM.png"));
frame.setContentPane(panel);
这是ImagePanel类:
@SuppressWarnings("serial")
public class ImagePanel extends JPanel {
BufferedImage img;
public ImagePanel(URL url) {
super(true);
this.setToolTipText(url.getPath());
try {
img = ImageIO.read(new File(url.getPath()));
this.setPreferredSize(new Dimension(
img.getWidth(), img.getHeight()));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), null);
}
}
有什么建议吗?
答案 0 :(得分:3)
img = ImageIO.read(new File(url.getPath())); // REMOVE!
试试这个..
img = ImageIO.read(url);
System.out.pritln()
作为完整性检查。 E.G。
import java.net.URL;
class URLTest {
public static void main(String[] args) throws Exception {
URL url = new URL("jar:file:/C:/baz.jar!/COM/foo/Quux.class");
System.out.println(url);
System.out.println(url.getPath());
}
}
jar:file:/C:/baz.jar!/COM/foo/Quux.class
file:/C:/baz.jar!/COM/foo/Quux.class
现在告诉我。路径甚至看起来像文件名/路径?
如有疑问。打印出来。
答案 1 :(得分:0)
你需要把它变成一个jar,在你创建它的文件夹中,在一个名为“edu”的文件夹中,在那个“资源”中的那个“gui”中名为“tictactoe”的文件夹中图像“最后,制作一张名为”UIMM.png“的照片
换句话说,在jar中的文件夹中创建相同的文件夹结构。
我也有同样的问题 p.s我认为你正在使用mac,如果你是,用Jar Bundler应用程序捆绑它,它是mac的最佳捆绑器