2014-08-27 55 views
0

我嘗試在程序中畫線,並且我經常得到這個錯誤。 我在做什麼是: 我有一個帶有BoxLayout的JFrame(在Y_AXIS ),在這個框架內部,我有一個在另一個之下的JPanel。 在第2個小組,我有一些的JLabel和JTextField的,我想提請線在第三的JPanel,我這樣做:java.lang.NullPointerException當在JPanel中的DrawOval

public void Dibujar(int vidas){ Graphics graf = panel3.getGraphics(); if(vidas == 6){ graf.drawOval(10, 10, 30, 30); } else{ graf.drawOval(10, 10, 60, 60); } }

但這樣做我得到的NullPointerException異常,而不是這個我嘗試使用它的工作方法paintComponent,但它繪製所有的Jpanels,而不是完全的Jpanel3。

如果你需要解釋一些別的只是告訴我。 非常感謝您提前。

+0

繪畫必須的paintComponent()來完成。發佈一個簡短但完整的可運行示例,在paintComponent()中繪畫並重現問題。告訴我們你期望它做什麼以及它做什麼。 – 2014-08-27 16:19:21

回答

0

在您的Panel3部分中調用此方法。你想paint特定的component

@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()); 
+1

非常感謝,它幫了很多,現在它完美。 – Santiago 2014-08-27 16:46:57

+0

忽略'Graphics g = getGraphics();'並添加一個'super.paintComponent(g)'。 (除此之外,該方法可能是'受保護的'並且應該有'@ Override'註釋。) – Marco13 2014-08-27 19:34:12

+0

謝謝,我會編輯。我在C#中幾乎無限期地編程,而且我忘記了一些小事情。 – Adam 2014-08-28 12:17:04

相關問題