我知道这很简单,但是因为我已经实例化了这个类,所以我无法理解为什么我会遇到这个异常:
线程“main”中的异常java.lang.NullPointerException
在javax.swing.ImageIcon。(ImageIcon.java:181)
在GameFrame。(GameFrame.java:16)
在GameFrame.main(GameFrame.java:88)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GameFrame extends JFrame implements ActionListener{
//Mini games and main panel components
private JPanel MainPanel;
private JPanel gamePanel1, gamePanel2, gamePanel3, gamePanel4, gamePanel5, gamePanel6, gamePanel7, gamePanel8, gamePanel9;
private JPanel[] gamePanels = {gamePanel1, gamePanel2, gamePanel3, gamePanel4, gamePanel5, gamePanel6, gamePanel7, gamePanel8, gamePanel9};
private JButton[][] buttons;
private int turn;
//X and O images
private JLabel X = new JLabel();
private ImageIcon x = new ImageIcon(getClass().getResource("/Images/X.PNG"));
private JLabel O = new JLabel();
private ImageIcon o = new ImageIcon(getClass().getResource("/Images/O.PNG"));
//constructor
public GameFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
//gf.setSize(800,600);
setVisible(true);
setUpMainPanel();
add(MainPanel);
}
public void setUpMainPanel() {
//sets the layout
}
public static void main(String[] args) {
GameFrame frame = new GameFrame();
}
}
我已尝试在main()中执行所有构造函数(例如setVisible(true)),但我得到了相同的错误。令人惊讶的是,关于这一点,没有很多容易找到的信息。为什么imageIcon会给它一个问题?谢谢你的帮助!
答案 0 :(得分:4)
我的猜测是你的应用程序无法找到图片。
可以添加
吗?System.out.println(getClass().getResource("/Images/X.PNG"));
并显示结果?我猜结果将打印'null'。如果是这样,图像的位置是不正确的,例如,前导斜杠可能是错误的,或者介意文件或路径的外壳。
答案 1 :(得分:0)
您可以尝试以下
BufferedImage image = ImageIO.read(getClass().getResource("/Images/X.PNG"));
if(image != null)
ImageIcon x = new ImageIcon(image);
答案 2 :(得分:0)
//X and O images
private JLabel X = new JLabel();
//try changing these around; EX:
private ImageIcon x = new ImageIcon(getClass().getResource("X.PNG"));
private ImageIcon x = new ImageIcon(getClass().getResource("Images/X.PNG"));
private JLabel O = new JLabel();
private ImageIcon o = new ImageIcon(getClass().getResource("previousFolder/Images/O.PNG"));
答案 3 :(得分:0)
此“/Images/X.PNG”位置没有图像。将图像“X.PNG”放在/ Images目录
中答案 4 :(得分:0)
我最终放置了
X = new JLabel();
x = new ImageIcon(getClass().getResource("/Images/X.PNG"));
O = new JLabel();
o = new ImageIcon(getClass().getResource("/Images/O.PNG"));
中的
public void actionPerformed(ActionEvent e) {