Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPanel中drawOval时的java.lang.NullPointerException_Java_Graphics_Nullpointerexception_Jframe_Jpanel - Fatal编程技术网

JPanel中drawOval时的java.lang.NullPointerException

JPanel中drawOval时的java.lang.NullPointerException,java,graphics,nullpointerexception,jframe,jpanel,Java,Graphics,Nullpointerexception,Jframe,Jpanel,我试图在一个程序中画线,但我经常遇到这个错误。。 我现在做的是: 我有一个JFrame和一个BoxLayout(在Y_轴上),在这个框架内我有6个JPanel,一个在另一个下面。 在前两个面板中,我有一些jlabel和JTextFields,我想在第三个JPanel中画线,我这样做了: public void Dibujar(int-vidas){ Graphics graf=panel3.getGraphics(); 如果(vidas==6){ graf.drawOval(10,10,30,3

我试图在一个程序中画线,但我经常遇到这个错误。。 我现在做的是: 我有一个JFrame和一个BoxLayout(在Y_轴上),在这个框架内我有6个JPanel,一个在另一个下面。 在前两个面板中,我有一些jlabel和JTextFields,我想在第三个JPanel中画线,我这样做了:

public void Dibujar(int-vidas){
Graphics graf=panel3.getGraphics();
如果(vidas==6){
graf.drawOval(10,10,30,30);
}
否则{
graf.drawOval(10,10,60,60);
}
}

但是这样做,我得到了NullPointerException,而不是它,我尝试使用它工作的方法paintComponent,但是它在所有JPanel下面绘制,而不是确切地说在Jpanel3下面绘制

如果你还需要解释什么,就告诉我。
提前非常感谢。

请在您的Panel3部分中调用此方法。您想
绘制一个特定的
组件

@Override
class PaintExtension extends JComponent
{
    public void paintComponent(Graphics g)
    {
       int vidas = GetVidas(); //Make a method to get the vidas
       super.paintComponent(g);
       if(vidas == 6)
       {
          g.drawOval(10, 10, 30, 30);
       } 
       else
       {
          g.drawOval(10, 10, 60, 60);
       }

    }
}
在GUI中:

panel3.add(new PaintExtension());

必须在paintComponent()中完成绘制。发布一个简短但完整的可运行示例,在paintComponent()中绘制,并再现问题。告诉我们你期望它做什么以及它会做什么。非常感谢你,它帮助了很多,现在它工作得非常完美。省略
Graphics g=getGraphics()并添加一个
super.paintComponent(g)
。(除此之外,该方法可能受
保护
,并且应该有
@Override
注释。)谢谢,我将编辑。我几乎无限期地用C语言编程,我确实忘记了一些小事情。