最近一直在找如何把图片加载到java中,试了好多网上说的,结果都出了一堆的错。早上起来继续调试,终于弄好了,原来是路径的问题。
我就把部分代码放到这里:
setResizable(false);
Container c = getContentPane();
c.setLayout(null);
setBounds(100,100,300,78);
JLabel picture = new JLabel();
//加载图片
ImageIcon icon = new ImageIcon(getClass().getResource("D:\\Program Files\\eclipse-SDK-3.6.2-win32\\Thread\\bin\\com\\muchTask.aa.jpg"));
picture.setIcon(icon);
picture.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight());
c.add(picture);
setVisible(true);
然后编译的错误为:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at com.muchTask.SleepMethodDemo.<init>(SleepMethodDemo.java:37)
at com.muchTask.SleepMethodDemo$1.run(SleepMethodDemo.java:52)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
看到这一堆的错误,我头就大了,但千万不要被吓到。这只是你的图片没有找到,跑出了一个空指针异常而已。
我将程序修改之后:
Container c = getContentPane();
c.setLayout(null);
setBounds(100,100,300,300);
JLabel picture = new JLabel();
//加载图片
ImageIcon icon = new ImageIcon(getClass().getResource("aa.jpg"));
picture.setIcon(icon);
picture.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight());
c.add(picture);
setVisible(true);
然后运行正确,我是这样设置的。
首先要把图片和.class文件都放在bin目录里面。然后在程序中,只需要简单的 ImageIcon icon = new ImageIcon(getClass().getResource("aa.jpg"));由于图片和可执行文件在同一个文件夹,相对路径应该是aa.jpg。而我之前写的是绝对路径。
如果我有写的不对之处,敬请各位纠正哦。