import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;public class StcokApp extends Frame{
/**
*
*/
private static final long serialVersionUID = 1L;
public static StcokApp app;
public Image m_iBuffer;
public Graphics m_gBuffer;
public static void main(String []arg){
System.out.println(" Welcome StockApp ...");
app = new StcokApp();
app.show();
}
public void show()
{
m_iBuffer = this.createImage(600, 400);
String str = "Hello World ";
m_gBuffer = m_iBuffer.getGraphics();
m_gBuffer.setColor(Color.black);
m_gBuffer.fillRect(0, 0, 300, 200);
m_gBuffer.setColor(Color.red);
m_gBuffer.setFont(new Font(null, 0, 20));
m_gBuffer.drawString(str, 20, 100);
repaint();
}
}
一运行就会出现如下打印:Exception in thread "main" java.lang.NullPointerException
at com.laohui.StcokApp.show(StcokApp.java:28)
at com.laohui.StcokApp.main(StcokApp.java:21)
为啥会出现空指针了?请各位大侠帮忙分析一下
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;public class StcokApp extends Frame{
/**
*
*/
private static final long serialVersionUID = 1L;
public static StcokApp app;
public Image m_iBuffer;
public Graphics m_gBuffer;
public static void main(String []arg){
System.out.println(" Welcome StockApp ...");
app = new StcokApp();
app.show();
}
public void show()
{
m_iBuffer = this.createImage(600, 400);
String str = "Hello World ";
m_gBuffer = m_iBuffer.getGraphics();
m_gBuffer.setColor(Color.black);
m_gBuffer.fillRect(0, 0, 300, 200);
m_gBuffer.setColor(Color.red);
m_gBuffer.setFont(new Font(null, 0, 20));
m_gBuffer.drawString(str, 20, 100);
repaint();
}
}
一运行就会出现如下打印:Exception in thread "main" java.lang.NullPointerException
at com.laohui.StcokApp.show(StcokApp.java:28)
at com.laohui.StcokApp.main(StcokApp.java:21)
为啥会出现空指针了?请各位大侠帮忙分析一下
试试看app = new StcokApp();
app.setVisible(true); //先把frame显示出来
app.show();
Exception in thread "main" java.lang.NullPointerException
at com.laohui.StcokApp.show(StcokApp.java:30)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at com.laohui.StcokApp.main(StcokApp.java:21)
还是没有通过,个人认为没有setVisible(true)的话应该只是所画的东西不可见,和创建缓存和画布应该没有太大的关系吧
public Image createImage(int width,
int height)创建一幅用于双缓冲的、可在屏幕外绘制的图像。 参数:
width - 指定的宽度
height - 指定的高度
返回:
一幅屏幕外可绘制的图像,可用于双缓冲。如果组件是不可显示的,则返回值可能为 null。如果 GraphicsEnvironment.isHeadless() 返回 true,则始终发生这种情况。
从以下版本开始:
JDK1.0
另请参见:
isDisplayable(), GraphicsEnvironment.isHeadless()
会不会跟show方法有关,因为这样相当于重写frame的show方法了,你改成别的方法名试试看
加一个语句public void shows() {
this.show(true);
m_iBuffer = this.createImage(600, 400);
.....