[英]DrawString Not Drawing String
您好我正在學習java游戲開發,當我運行它運行的代碼但是沒有繪制String時它給了我這個錯誤在Code.Core.render的線程“main”java.lang.NullPointerException中的異常(Core.java:62)在Code.Core.run(Core.java:69)的Code.Core.start(Core.java:27)在Code.Core.main(Core.java:45)
繼承我的守則
package Code;
import java.applet.Applet;
import java.awt.*;
import java.awt.image.VolatileImage;
import javax.swing.*;
public class Core extends Applet implements Runnable{
////////////////////////////////////////////////////////////////////
double x, y, Cx, Cy;
public static boolean isRunning = false;
static JFrame frame;
public static Core core = new Core();
public Image i = new ImageIcon("res/Google.jpg").getImage();
public VolatileImage screen;
////////////////////////////////////////////////////////////////////
public void start() {
isRunning = true;
core.run();
}
public void stop() {
isRunning = false;
}
public static void main(String[] args) {
frame = new JFrame();
frame.add(core);
frame.setUndecorated(true);
frame.pack();
frame.setResizable(false);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
core.start();
}
public void tick() {
System.out.println("tick");
}
public void render() {
Graphics g = null;
System.out.println("render");
setBackground(Color.PINK);
setForeground(Color.WHITE);
g.drawString("Test", 500, 500);
}
public void run() {
while(isRunning){
tick();
render();
try{Thread.sleep(5);}catch(Exception e){isRunning = false;}
}
}
}
public void render() {
Graphics g = null; // uh oh.
System.out.println("render");
setBackground(Color.PINK);
setForeground(Color.WHITE);
g.drawString("Test", 500, 500); // g is null here.
}
您將g
直接賦值為null,然后在其上調用方法。 這會給你一個NPE。
Applet
擴展,但創建一個JFrame
來容納它。 混合重量輕和重量輕的組件是明智的,更不用說在框架上添加小程序了。 Graphics
內容可用於繪制... 首先創建一個可以繪制的自定義組件(例如,從JPanel
擴展)。 然后,您可以決定在何處顯示它,例如在小程序或框架上。
有關如何在Swing中執行繪畫的詳細信息,請參閱執行自定義繪畫
看一下Swing中的Concurrency,了解有關如何執行長時間運行的任務以及從Event Dispatching Thread的上下文更新UI的詳細信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.