我一直在一个小项目中工作,以获得一些练习编程。它基本上完成了,但是在我能够正确使用图像之前我不会感到满意,我们会感激一点帮助。
所以,目前我正在使用ImageIcon类中的getImage方法,如下所示:
Image body = new ImageIcon("C:/Users/Centollo/Documents/NetBeansProjects/Chess/build/classes/chess/img/WhiteBishop.png").getImage();
我一直试图弄清楚如何在不使用绝对路径的情况下做同样的事情,但我不知道如何将图像作为jar的一部分,以便它可以在任何其他机器。
我需要知道的是放置图像的位置以及访问它们的代码如何。 请尝试解释它,就像我愚蠢的那样。我已经阅读了类似问题的答案,但我不能对它们做出正面或反面。
我在NetBeans中使用"国际象棋"包含所有.java和" chess.img"打包所有.png。
答案 0 :(得分:1)
如果您的课程从JFrame扩展,您可以这样做:
Image image = new ImageIcon(this.getClass().getResource("/images/MyImage.jpg")).getImage();
如果你的课程扩展了Applet,你可以这样:
private URL base = null;
private Image myImage = null;
try
{
base = getDocumentBase();
} catch (Exception e)
{
e.printStackTrace();
}
myImage = getImage(base, "images/MyImage.jpg");
答案 1 :(得分:0)
一个非常快速的谷歌搜索产生了这个:
URL resource = getClass().getClassLoader().getResource( "img/WhiteBishop.png" );
Image body = new ImageIcon( resource );
答案 2 :(得分:0)
有几种方法可以做到这一点,但这就是我建议的方式:
确保chess.img
文件夹位于应用程序的类路径中。然后尝试引用类似chess.img/image
的路径(是的,你可以在windows中使用正斜杠。)
如果不能使用:
ChessClass.class.getClassLoader().loadResourceAsStream("/chess.img/image");
请注意文件引用开头的正斜杠。这指向类路径的根。它有点令人困惑,因为有unix / linux经验的人可能认为它指的是文件系统的根。由于我10年前所知的原因,这往往比其他答案更好。这是一个丑陋的Java,从未完全清理过。