我收到一個錯誤:圖形g上的java.lang.NullPointerException。 這是我的代碼:我收到一個錯誤:圖形g上的java.lang.NullPointerException g
package main;
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
public class main implements Runnable {
public static final int WIDTH = 1024;
public static final int HEIGHT = 1024;
public static final String TITLE = "platformer";
public boolean running = false;
static main home = new main();
public Graphics g;
public static Canvas canvas = new Canvas();
public static void main(String[] args) {
home.display();
home.start();
}
public void display(){
JFrame frame = new JFrame(TITLE);
frame.setSize(WIDTH, HEIGHT);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
canvas.setPreferredSize(new Dimension(WIDTH, HEIGHT));
frame.add(canvas);
}
BufferStrategy bs;
public void render(){
bs = main.getCanvas().getBufferStrategy();
if(bs == null){
main.getCanvas().createBufferStrategy(3);
}
g = bs.getDrawGraphics();
g.fillRect(0, 0, WIDTH, HEIGHT);
g.dispose();
bs.show();
}
public void tick(){
}
public void run(){
long lastTime = System.nanoTime();
final double amountofticks = 60;
double ns = 1000000000/amountofticks;
double delta = 0;
double time = 0;
int frames = 0;
while(running){
long now = System.nanoTime();
delta += (now-lastTime)/ns;
time += (now-lastTime);
lastTime = now;
if(delta>=1){
home.tick();
home.render();
delta--;
frames++;
}
if(time>1000000000){
System.out.println(frames);
time = 0;
frames = 0;
}
}
stop();
}
private Thread thread;
public void start(){
running = true;
thread = new Thread(this);
thread.start();
}
public static Canvas getCanvas(){
return canvas;
}
public void stop(){
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我收到錯誤消息: 異常在線程 「線程2」 main.main.render顯示java.lang.NullPointerException (main.java:37) 在main.main.run(main.java:59) at java.lang.Thread.run(Unknown Source) line 37 is g = bs.getDrawGraphics(); 我認爲由於某種原因圖形爲空。 我試圖讓這段代碼很長一段時間
對於神智的目的,請不要再包稱爲'main',或類稱爲'主要「,因爲它變得非常難以解釋。 – Compass
請學習如何正確縮進代碼。如果它在源文件中縮進,那麼當你複製/粘貼到堆棧溢出時,選中它並按下CTRL + K –