Witam, mam problem z przerobieniem appletu na aplikację. Gdy próbuję uruchomić poniższy kod dostaje błąd umieszczony poniżej. Szukałem wiele w internecie, jednak nie znalazłem rozwiązania. Gdyby ktoś powiedział mi co robię nie tak i co muszę zmienić byłbym wdzięczny :)
Błąd:
**Exception in thread "main" java.lang.NullPointerException
at pr.SokobanView.<init>(SokobanView.java:64)
at pr.SokobanView.main(SokobanView.java:20)
**
Dotyczy linii z bg=bufor.getGraphics();
package pr;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Timer;
import javax.swing.JFrame;
public class SokobanView extends Frame {
public static void main(String args[])
{
System.out.println("tak");
SokobanView sokoban = new SokobanView();
sokoban.setSize(540,400);
sokoban.setBackground(Color.LIGHT_GRAY);
}
int f=0;
int w=0;
int sizex = 14*40;
int sizey = 10*40;
static SokobanView applet;
SokobanModel ViewModel = SokobanModel.getInstance();
SokobanController ViewController = new SokobanController();
Timer timer = new Timer();
Image bufor;
Graphics bg;
static int stan = 1;
Image box;
Image floor;
Image face;
Image exit;
Image wall;
public int getSizeY()
{
return sizey;
}
public int getSizeX()
{
return sizex;
}
public SokobanView()
{
applet = this;
ViewController.appletakl();
bufor = createImage(sizex,sizey);
bg = bufor.getGraphics();
timer.scheduleAtFixedRate(ViewModel, 10, 10);
ViewModel.taketheboard();
Toolkit toolkit = Toolkit.getDefaultToolkit();
box = toolkit.getImage("img/box.jpg");
floor = toolkit.getImage("img/floor.jpg");
face = toolkit.getImage("img/face.png");
exit = toolkit.getImage("img/exit.jpg");
wall = toolkit.getImage("img/wall.jpg");;
}
public void update(Graphics g)
{
bg.clearRect(0,0,sizex,sizey);
paint(bg);
g.drawImage(bufor,0,0,applet);
}
int i =2;
public void startorend()
{
if(stan==0)
{
startorend SOS = new startorend();
SokobanIff SI = new SokobanIff();
SOS.view();
SOS=SI;
SOS.view();
SokobanStart SS = new SokobanStartFactory().getInstance(i);
SS.view();
}
if(stan==2)
{
SokobanEndAdapter SEA = new SokobanEndAdapter();
SEA.view();
}
}
public void paint(Graphics g)
{
switch(stan)
{
case 0:
startorend();
stan=1;
break;
case 1:
drawtheboard(g);
break;
case 2:
startorend();
end(g);
break;
}
}
public void end(Graphics g)
{
}
public void drawtheboard(Graphics g)
{
for(int i = 0;i<ViewModel.board.length;i++)
{
for(int j=0;j<ViewModel.board[0].length;j++)
{
switch(ViewModel.board[i][j])
{
case 0:
g.drawImage(floor,40*j,40*i,this);
f=1;
break;
case 1:
g.drawImage(wall,40*j,40*i,this);
w=1;
break;
}
if(ViewModel.exit[i][j]==2)
{
g.drawImage(exit,40*j,40*i,this);
}
switch(ViewModel.board[i][j])
{
case 3:
g.drawImage(box,40*j,40*i,this);
break;
case 4:
if(ViewModel.ifexit()==true){
g.drawImage(exit,40*j,40*i,this);
g.drawImage(face,40*j,40*i,this);
break;
}
else{
g.drawImage(floor,40*j,40*i,this);
g.drawImage(face,40*j,40*i,this);
break;
}
}
}
}
}
int getf(){
return f;
}
int getw(){
return w;
}
}