我得代码如下,我本想在实例化类JP的时候传两个参数给它,但是程序老是报错,报错内容在代码下面
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ShowRec_Ove { public static void main(String[] args) {
new JF().show();
}
}class JP extends JPanel
{
public JP(int x,int y)
{
Graphics g=this.getGraphics();
g.setColor(Color.RED);
g.setFont(new Font("黑体",Font.BOLD+Font.ITALIC,20));
g.drawString("test",x,y);

}}
class JF extends JFrame
{
public JF()
{
setTitle("test");
setSize(600,300);
getContentPane().add(new JP(30,39));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
报错如下:
java.lang.NullPointerException
at accp.JP.<init>(ShowRec_Ove.java:30)
at accp.JF.<init>(ShowRec_Ove.java:43)
at accp.ShowRec_Ove.main(ShowRec_Ove.java:21)
Exception in thread "main" 
到底哪里错了呢?

解决方案 »

  1.   

    我试了好多方法,但都不管用,还是提示NullPointerException异常。只有在JP类中重写public void paintComponent(Graphics g)
    {
      g.setColor(Color.RED);
      g.setFont(new Font("黑体",Font.BOLD+Font.ITALIC,20));
      g.drawString("test",x,y);
    }
    才好用,书上说一般都要重写这个方法画图。我试了换个方法名字,然后在JF类中人工调用它,传JP类的getGraphics()做为参数,但还是出这个异常,哎,我也是菜鸟,没办法啊,你就重写public void paintComponent(Graphics g){}方法吧,或者等大大们回复你
      

  2.   

    Graphics g=this.getGraphics();你调用的太早啦,g得到的是null
      

  3.   

    把JP类该一下:
    记住paintComponent(Graphics g)这个函数就ok了class JP extends JPanel
    {
    private int x,y;
    public JP(int x,int y)
    {
    this.x = x;
    this.y = y;
    }
    public void  paintComponent(Graphics g)
    {
    g.setColor(Color.RED);
    g.setFont(new Font("黑体",Font.BOLD+Font.ITALIC,20));
    g.drawString("test",x,y);
    }
    }
      

  4.   

    To:aaa2003gf()
    你觉得什么时候调用 Graphics g=this.getGraphics();才不会使g为null呢?
      

  5.   

    我不懂,不知下面的介绍对你有用?JFrame 类与 Frame 轻微不兼容。与其他所有 JFC/Swing 顶层容器一样,JFrame 包含一个 JRootPane 作为其惟一的子容器。根据规定,根窗格所提供的内容窗格应该包含 JFrame 所显示的所有非菜单组件。这不同于 AWT Frame。作为 add 的便捷方法及其变体,已经重写了 remove 和 setLayout,以在必要时将其转发到 contentPane。这意味着可以编写:        frame.add(child);
     子级将被添加到 contentPane。内容窗格始终是非 null 的。试图将其设置为 null 会导致 JFrame 抛出异常。默认的内容窗格上会设置有 BorderLayout 管理器。有关添加、移除和设置 JFrame 的 LayoutManager 的详情,请参阅 RootPaneContainer。