Ok, dus ik vroeg me af of iemand me kon vertellen waar ik het mis heb.
Ik heb een JApplet met de naam Game die goed wordt uitgevoerd als ik deze vanuit de eclips uitvoert met de AppletViewer en een JFrame met de naam GUI die de JApplet bevat. Hier is de code voor beide:
PS. ik heb de meeste code uit Game verwijderd om het kleiner te maken, het is nu gewoon basic.
Game.java:
package com.ion.brickdodge;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JApplet;
public class Game extends JApplet implements Runnable{
private static final long serialVersionUID = 1L;
Image man1;
Image man2;
Image cman;
int WIDTH = 250;
int HEIGHT = 350;
int lives = 3;
int spx = WIDTH/2;
int score = 0;
Image dbImage;
Graphics dbg;
public void init() {
setSize (WIDTH, HEIGHT);
setFocusable(true);
setBackground(Color.LIGHT_GRAY);
man1 = getImage(getCodeBase(), "res/man1.png");
man2 = getImage(getCodeBase(), "res/man2.png");
cman = man1;
}
public void start() {
Thread th = new Thread(this);
th.start();
}
public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while(true){
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void paint(Graphics g) {
g.drawImage(cman, spx, 320, this);
g.setColor(Color.BLACK);
g.drawString("Score: " + score, 5, 10);
g.drawString("Lives: " + lives, 5, 25);
}
public void update(Graphics g){
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
dbg.setColor (getForeground());
paint (dbg);
g.drawImage (dbImage, 0, 0, this);
}
}
En hier is GUI.java:
package com.ion.brickdodge;
import java.awt.BorderLayout;
import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GUI {
public static void main(String args[]) {
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1000, 1000);
JPanel panel = new JPanel(new BorderLayout());
frame.add(panel);
JApplet applet = new Game();
panel.add(applet, BorderLayout.CENTER);
applet.init();
frame.pack();
frame.setVisible(true);
}
}
De fout die GUI.java genereert wanneer ik deze uitvoer, is ...
Exception in thread "main" java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)
at com.ion.brickdodge.Game.init(Game.java:30)
at com.ion.brickdodge.GUI.main(GUI.java:22)
Alle hulp zou zeer op prijs worden gesteld