2014-08-27 4 views
0

프로그램에서 줄을 그릴 때 끊임없이이 오류가 발생합니다. 내가하고있는 일은 다음과 같습니다. BoxLayout이있는 JFrame이 있습니다 (Y_AXIS에서), 그리고이 프레임 안에는 6 개의 JPanel이 있습니다. 처음 2 개 패널에서 는 좀 JLabels 및 JTextFields이 있고, 나는 세 번째 인 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()에서 페인팅하고 문제를 재현하십시오. 당신이 기대하는 바가 무엇인지, 대신 무엇을하는지 알려주십시오. –

답변

0

Panel3 섹션에서이 메소드를 호출하십시오. paint 특정 component을 원합니다. GUI에서

@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); 
     } 

    } 
} 

:

panel3.add(new PaintExtension()); 
+1

대단히 감사합니다. 많은 도움이되었습니다. 이제는 완벽하게 작동합니다. – Santiago

+0

'Graphics g = getGraphics();'를 생략하고 대신에'super.paintComponent (g)'를 추가하십시오. (그 외에도이 메소드는'protected '일 수도 있고'@ Override'주석을 가져야합니다.) – Marco13

+0

고마워, 편집 할게. 나는 C#에서 거의 무한정 프로그램을하고 나는 작은 것들을 잊어 버린다. – Adam

관련 문제