[英]JApplet null pointer exception on start
我正在為一個類編寫小程序,並認為代碼看起來正確,小程序啟動時出現了空指針異常。 任何幫助將不勝感激。
錯誤信息:
java.lang.NullPointerException
在sun.applet.AppletAudioClip(AppletAudioClip.java:65)
在java.applet.Applet.newAudioClip(Applet.java:311)
在Lab5b。(Lab5b.java:14)
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本機方法)處
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct orAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC onstructorAccessorImpl.java:45)
在java.lang.reflect.Constructor.newInstance(Constructor.java:525)
在java.lang.Class.newInstance0(Class.java:372)
在java.lang.Class.newInstance(Class.java:325)
在sun.applet.AppletPanel.createApplet(AppletPanel.java:795)
在sun.applet.AppletPanel.runLoader(AppletPanel.java:724)
在sun.applet.AppletPanel.run(AppletPanel.java:378)
在java.lang.Thread.run(Thread.java:722)
碼:
import javax.swing.*;
import java.awt.event.*;
import java.net.URL;
import java.applet.*;
import java.awt.*;
public class Lab5b extends JApplet {
private AudioClip audioClip;
public Lab5b() {
add(new ImagePanel());
URL urlForAudio = getClass().getResource("audio/us.mid");
audioClip = Applet.newAudioClip(urlForAudio);
audioClip.loop();
}
public void start() {
if (audioClip != null) audioClip.loop();
}
public void stop() {
if (audioClip != null) audioClip.stop();
}
/** Main method */
public static void main(String[] args) {
// Create a frame
JFrame frame = new JFrame("Lab 5");
// Create an instance of the applet
Lab5b applet = new Lab5b();
applet.init();
// Add the applet instance to the frame
frame.add(applet, java.awt.BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Display the frame
frame.setSize(200, 660);
frame.setVisible(true);
}
}
class ImagePanel extends JPanel {
private ImageIcon imageIcon = new ImageIcon("image/us.gif");
private Image image = imageIcon.getImage();
private int y = 550;
public ImagePanel() {
Timer timer = new Timer(120, new TimerListener());
timer.start();
}
class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
increaseY();
}
}
public void increaseY() {
if (y > 0) {
y--;
repaint();
}
}
/** Draw image on the panel */
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g.fillRect(0, 0, 10, 660);
g.drawImage(image, 11, y, 160, 84, this);
}
}
}
當找不到資源時, getResource
方法返回null
,這使AppletAudioClip
構造函數引發異常。 確保us.mid
位於一個名為audio
的目錄中,該目錄與Lab5b.class
位於同一目錄中:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.