图像没有显示在罐子里
我的程序在Eclipse中完美运行,但是当我输出它时,图像不显示。图像没有显示在罐子里
我的设置是这样
src
..gui
....Main.java
....menus
......MenuMain.java
res
...Logo.png
我从MenuMain.java refence Logo.png,我试过很多方法;
res/Logo.png
/res/Logo.png
.res/Logo.png
../../Logo.png
- ++++
前3者在Eclipse中工作,但在罐既不作品。我检查了jar文件,res文件夹在那里,所有的图像也是如此。我也尝试编辑MANIFEST.MF并添加类路径:
但它仍然无法正常工作。我没有得到任何错误,当运行JAR,其他一切都显示文件(按钮,标签,++)
编辑: 我用这是JPanel与GridBagLayout,我添加一个ImageIcon JLabel能够将它添加到JPanel。本来我以前是这样的:
JLabel logo = new JLabel(new ImageIcon("res/Logo.png"));
但我也试过像其他变化:
JLabel logo = new JLabel(new ImageIcon(MenuMain.class.getClassLoader().getResource("/res/Logo.png")));
而且还通过getResourceAsStream()
在Eclipse中只有第一个作品,但不显示在罐子里。其他人只是崩溃(空指针)
您需要包括Logo.png在你的罐子,并使用ClassLoader.getResourceAsStream()
一般模式的类路径中加载资源:
...
InputStream resource = className.class.getResourceAsStream("/res/Logo.png");
Image image = ImageIO.read(resource);
// do your display stuff here...
...
我在我的罐子里有Logo.png。我也试过至少10个变种的代码,但后来我不能在eclipse中运行(没有尝试导出它,所以我不知道它是否有效)。 – Limon 2013-04-04 18:07:10
好的,然后使用'getResourceAsStream()'而不是'FileInputStream'。 – PaulProgrammer 2013-04-04 18:07:59
InputStream resource = MenuMain.class.getResourceAsStream(“/ res/Logo.png”); \t \t JLabel logo = new JLabel(); \t \t尝试{ \t \t \t logo = new JLabel(new ImageIcon(ImageIO.read(resource))); \t \t} catch(IOException e){e。的printStackTrace(); } 在线程“main”中给出异常java.lang.IllegalArgumentException:input == null! – Limon 2013-04-04 18:11:14
是这样摇摆?你能发布与阅读/渲染图像相关的代码片段吗? – asgs 2013-04-04 17:59:56
从jar中运行时,通常需要将src文件夹的编译内容和res文件夹的所有内容放在一起。然后你只需从类路径加载。 – 2013-04-04 18:00:04
@asgs在主要帖子中增加了更多信息 – Limon 2013-04-04 18:22:50