* A simple panel for testing various parts of our game.
* This is not part of the game. It's just for testing.
*/
package game;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
/**
* A simple panel for testing various parts of our game.
* This is not part of the game. It's just for testing.
*/
public class TestPanel extends JPanel
{
private static final long serialVersionUID = 1L; // Ignore this - It's just to get rid of a warning.
// Instance variable(s).
private Image backdrop;
/**
* Constructor - loads a background image
*/
public TestPanel ()
{
try
{
ClassLoader myLoader = this.getClass().getClassLoader();
InputStream imageStream = myLoader.getResourceAsStream("resources/path_1.jpg");
backdrop = ImageIO.read(imageStream);
// You will uncomment these lines when you need to read a text file.
InputStream pointStream = myLoader.getResourceAsStream("resources/ path_1.txt");
Scanner s = new Scanner (pointStream);
}
catch (IOException e)
{
System.out.println ("Could not load: " + e);
}
}
/**
* This paint meethod draws the background image anchored
* in the upper-left corner of the panel.
*/
public void paintComponent (Graphics g)
{
g.drawImage(backdrop, 0, 0, null);
}
/* Override the functions that report this panel's size
* to its enclosing container. */
public Dimension getMinimumSize()
{
return new Dimension (600, 600);
}
public Dimension getMaximumSize()
{
return getMinimumSize();
}
public Dimension getPreferredSize()
{
return getMinimumSize();
}
}
此代码旨在实现我正在为Java课程工作的视频游戏任务。该类仅用于测试我们的代码。在分配方向上,我被告知要在try块中放置代码,如上所示。显然,代码应该打开我工作区中文件夹中的JPEG图像。但是,当我尝试代码时,它只声明:
Exception in thread "main" java.lang.NullPointerException at
java.io.Reader.<init>(Unknown Source) at
java.io.InputStreamReader.<init>(Unknown Source) at
java.util.Scanner.<init>(Unknown Source) at
game.TestPanel.<init>(TestPanel.java:43) at
game.TestApplication.main(TestApplication.java:24)
我不完全清楚inputStream和classLoaders的作用。所以,如果你有任何基本信息,那就太好了。另外,我知道构造函数方法下面的其他方法没有代码。我的任务指示没有说明我应该在这些方法中输入什么。
enter code here
enter code here
答案 0 :(得分:0)
有很多现有的SO问题解释了getResourceAsStream
在各种情况下返回null
的原因; e.g。
它们都归结为一个根本原因:类加载器找不到你告诉它找到的资源。 javadoc说如果类加载器找不到请求的资源,它将返回null
而不是抛出异常。
这可能由于各种原因而发生。常见的包括: