Java论坛网»Java技术»Graphics错误Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Graphics错误Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

问?:
当我运行下面的程序时,出现标题出现的错误

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;

public class Main extends JFrame {

private static final long serialVersionUID = 1L;

private JPanel jContentPane = null;

private JLabel jLabel = null;

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {
public void run() {
Main thisClass = new Main();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}


public Main() {
super();
initialize();
}


private void initialize() {
Graphics g;
this.setSize(300, 200);
this.setContentPane(getJContentPane());
g=jContentPane.getGraphics();
g.setColor(Color.black);
g.fillRect(0, 0, 20, 20);
this.setTitle("JFrame");
}


private JPanel getJContentPane() {
if (jContentPane == null) {

jLabel = new JLabel();
jLabel.setText("JLabel");
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(jLabel, BorderLayout.CENTER);

}
return jContentPane;
}

}


错误提示:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.zw.Main.initialize(Main.java:51)
at com.zw.Main.<init>(Main.java:38)
at com.zw.Main$1.run(Main.java:26)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
答!: 1:
这一看就知道是有对象没有经过初始化就被使 了
从程序可以看出,是你的Graphics对象没有初始化成功,也就是说
g=jContentPane.getGraphics();
返回的是null,而不是一个Graphics的引用
答!: 2:
应该怎么样解决哪? package com.zw;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;

public class Main extends JFrame {

private static final long serialVersionUID = 1L;

private JPanel jContentPane = null;

private JLabel jLabel = null;


/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Main thisClass = new Main();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
thisClass.jContentPane.getGraphics().setColor(Color.black);
thisClass.jContentPane.getGraphics().fillRect(0, 0, 50, 50);


}
});
}

/**
* This is the default constructor
*/
public Main() {
super();
initialize();

}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {

this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");

}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {

jLabel = new JLabel();
jLabel.setText("JLabel");
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(jLabel, BorderLayout.CENTER);

}
return jContentPane;
}

}
这样的话问题可以解决,但是不能draw出图像~

相关JAVA教程:
hibernate保存后返回主键
复合主键更新问题,在线等
急...急...急... 删除树节点后如何调整光标位置
DAO初学者问题
超链接如何加密?各位学长请指教
有没有人在netbeans platform上用过jfreechart,我在run module 的时候总是报NoClassDefFoundError,不知是
请问用hibernate新增一个记录后如何返回这条记录的自增ID?
利用Font设置文本字体的问题
有合肥的兄弟么,知道合肥凯捷么,这个公司怎么样?
在面板(JPanel)中创建能滚动列表框的问题,大家帮我看看
struts:基础问题!!!!各位大侠帮帮忙啊~!!
jms在jndi中的名字(sun one)