2013-12-09 6 views
0
public class aaa { 
public static void main(String[] args) 
{ 

bbb b=new bbb(); 
    b.setVisible(true); 
    b.setSize(400, 400); 

} 

} 
class bbb extends JFrame 
{ 
bbb() 
{ 

draw d=new draw(); 
add(d); 
} 

} 
class draw extends JComponent 
{ 
public void paintComponent(Graphics g) 
{ 
    Graphics2D g2=(Graphics2D) g; 
    Ellipse2D rect=new Ellipse2D.Double(); 
    rect.setFrameFromCenter(50,50,70,70); 
    g2.draw(rect); 
    g2.setPaint(Color.blue); 
    g2.fill(rect); 
} 
} 

설명해주십시오 캔트, 나는이 프로그램이 프레임을 생성하고 사각형 안에 타원을 그릴 것입니다 알고 ... 내 유일한 질문은, 그 때 의지하는 방법 "의 paintComponent (그래픽 g) "호출 될 것입니다 ... 그리고"JComponent "내부의 메소드입니다 만 언제 호출할까요? ...내가 아래 프로그램을 얻을 실제로

그리고 또 하나의 질문입니다. ..it에는 "Graphics"... 유형의 매개 변수가 있지만 클래스 "Graphics"에 대해 만들어진 객체가 없으면 메서드 (클래스 "Graphics"의 메서드)를 어떻게 호출 할 수 있습니까?

나는 이것이 어리석은 질문이라는 것을 알고 있지만, 내가 놓친 것을 알고있다. ...

+4

이것은 바보 같은 질문이 아니지만이 모든 것을 설명하는 자습서 중 일부를 놓친 것입니다. 여기에서 시작하십시오 : [단원 : 사용자 정의 페인팅 수행] (http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html). 자세한 내용은 [AWT 및 스윙에서 페인팅] (http://www.oracle.com/technetwork/java/painting-140037.html)을 참조하십시오. Swing 그래픽을 사용하면 그래픽이 종종 수동적으로 수행되기 때문에 미리 코딩 된 사고 방식을 깨는 다른 방식의 코딩과 사고 방식이 필요합니다. 튜토리얼을 확인해 주시면 후회하지 않으실 것입니다. –

+0

http://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html –

답변

1
  • 의 paintComponent를 (당신은 걱정할 필요가 없습니다 직접 전화 해.
  • 전달 된 매개 변수를 사용하여 Graphics 메서드를 호출 할 수 있습니다 (예 : g.setPaint() 등 docs에서

:

(...) 그림 서브 시스템 구성 요소가 손상되는 것을 결정하고 당신의 paintComponent 메소드가 호출되어 있는지 확인합니다.