我正在为类编写java代码,当我尝试运行代码时出现此错误。 错误消息是
"Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at MemoControl.<init>(MemoControl.java:27)
at MemoControl.main(MemoControl.java:76)"
作业是
&#34;使用Swing编写卡片匹配游戏的图形版本。你的程序应该有4行5列&#34;卡&#34;一边是空白而另一边是数字。通过点击两张翻过来的牌来玩游戏。如果匹配,它们将保持可见。如果他们不这样做,他们会面朝下翻转。你的程序应该有一个&#34;继续&#34;翻转两张不匹配牌的按钮和一个显示游戏开始后秒数的计时器。&#34;
import java.awt.*;
import javax.swing.*;
import javax.swing.JFrame;
import java.awt.event.*;
public class MemoControl extends JFrame {
public JLabel label;
public JButton button;
// images
public ImageIcon image1;
public JLabel label1;
public ImageIcon image2;
public JLabel label2;
public ImageIcon image3;
public JLabel label3;
public ImageIcon image4;
public JLabel label4;
public ImageIcon image5;
public JLabel label5;
public MemoControl() {
setLayout(new FlowLayout());
image1 = new ImageIcon(getClass().getResource("card_cover1.jpg"));
label1 = new JLabel(image1);
add(label1);
image2 = new ImageIcon(getClass().getResource("card_cover1.jpg"));
label2 = new JLabel(image2);
add(label2);
image3 = new ImageIcon(getClass().getResource("card_cover1.jpg"));
label3 = new JLabel(image3);
add(label3);
image4 = new ImageIcon(getClass().getResource("card_cover1.jpg"));
label4 = new JLabel(image4);
add(label4);
image5 = new ImageIcon(getClass().getResource("card_cover1.jpg"));
label5 = new JLabel(image5);
add(label5);
/*
* label = new JLabel("Welcome to AMY Memo Game"); add(label);
*/
/*
* textField = new JTextField(15); add(textField);
*/
button = new JButton("Flip");
add(button);
EventClass event = new EventClass();
button.addActionListener(event);
}// MyMemo constr end
private class EventClass implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
image1 = new ImageIcon(getClass().getResource("deer_card.jpg"));
label1 = new JLabel(image1);
}
}
}// Event class end
public static void main(String args[]) {
MemoControl gui = new MemoControl();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.pack();
gui.setVisible(true);
gui.setTitle("My Memo");
}// main end
}// AMYMemo class end
答案 0 :(得分:0)
您可以将新的ImageIcon(getClass()。getResource(&#34; card_cover1.jpg&#34;))修改为新的ImageIcon(&#34; card_cover1.jpg&#34;),试一试!因为card_cover1.jpg是一个文件,而不是一个路径;你的方法getClass()。getResource()需要返回URL。
答案 1 :(得分:0)
是的,这个图像必须在你的类包中。如果这些图像在资源文件夹中,那么使用getClass()。getClassLoader()。getResource(&#34; res / card_cover1.jpg&#34;)