java.lang.NullPointerException的问题

萧易86 2015-09-17 09:54:37
照着书写的一个“设置窗体标题栏图标”。但是运行的时候提示java.lang.NullPointerException。
代码如下:

package thirdthChapter;


import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.UIManager;

public class FrameIcon extends JFrame {

/**
*
*/
private static final long serialVersionUID = 317032021100672658L;
private JPanel contentPane;
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;

/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FrameIcon frame = new FrameIcon();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public FrameIcon() {
setResizable(false);
setTitle("\u6307\u5B9A\u7A97\u4F53\u6807\u9898\u680F\u56FE\u6807");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 535, 348);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

BackgroundPanel backgroundPanel = new BackgroundPanel();
URL resource = getClass().getResource("D:/Documents/Pictures/background.jpg");
Image image = new ImageIcon(resource).getImage();
backgroundPanel.setImage(image);
contentPane.add(backgroundPanel, BorderLayout.CENTER);

JPanel panel = new JPanel();
panel.setOpaque(false);
panel.setBounds(45, 212, 447, 54);
backgroundPanel.add(panel);

button1 = new JButton("\u56FE\u68071");
button1.setIcon(new ImageIcon(getClass().getResource("icon1.png")));
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
panel.add(button1);

button2 = new JButton("\u56FE\u68072");
panel.add(button2);
button2.setIcon(new ImageIcon(getClass().getResource("icon2.png")));
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});

button3 = new JButton("\u56FE\u68073");
panel.add(button3);
button3.setIcon(new ImageIcon(getClass().getResource("icon3.png")));
button3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});

button4 = new JButton("\u56FE\u68074");
panel.add(button4);
button4.setIcon(new ImageIcon(getClass().getResource("icon4.png")));
button4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
}

protected void do_button_actionPerformed(ActionEvent e) {
String resource = "";// 定义图标文件名称变量
if (e.getSource() == button1)// 确定用户单击的按钮
resource = "icon1.png";// 确定按钮对应的图标文件
if (e.getSource() == button2)
resource = "icon2.png";
if (e.getSource() == button3)
resource = "icon3.png";
if (e.getSource() == button4)
resource = "icon4.png";
URL url = getClass().getResource(resource);// 获取图标文件路径
setIconImage(Toolkit.getDefaultToolkit().getImage(url));// 设置窗体的图标
}
}



错误信息提示如下:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)

//感觉这两句是关键
at thirdthChapter.FrameIcon.<init>(FrameIcon.java:67)
at thirdthChapter.FrameIcon$1.run(FrameIcon.java:43)


at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)


请帮忙看看,哪出的问题啊 谢谢
...全文
88 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yumendedao 2015-09-17
  • 打赏
  • 举报
回复
应该是资源没找到 URL resource = getClass().getResource("D:/Documents/Pictures/background.jpg"); 这句的后面 System.out.println(resource ); 看一下是不是null 这个图片为什么不放在src下?

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧