2011-03-16 3 views
0

저는 단순한 셰이프 메이커가 될 프로그램을 작성하고 있습니다. 저는 셰이프를 선택하는 버튼이있는 controlPanel과 두 개의 패널을 사용하여 기본 패널 인 ShapeMakerPanel에 있어야합니다. 지우기 등) 및 drawingArea (도형이 실제로 그려지는 곳),하지만 내가 무엇을해도 drawingArea에 페인트가 나타나지 않습니다. paintContent를 사용하고 add (drawingArea)를 주석 처리하면 드로잉 작업이 작동하지만 맨 아래 레이어에서 어떻게 drawingArea Jpanel에 페인트 할 수 있습니까? 나는 모양을 그릴 않는 경우 또한, 난 단지마다 나는 새로운 일을 시작하기 때문에, 패널이 나는 그것 super.paintComponent (g) 알고JPanels에서 페인팅

super.paintComponent(g); 
    g.setColor(penColor); 
    if (p1 != null && p2 != null) 
    { 
     if (shapeChoice.getSelectedItem().equals("Line")) 
     { 
      Line line = new Line(p1.x, p1.y, p2.x, p2.y); 
      line.draw(g); 
     } 
    } 

clean` 닦아, 한 번에 하나를 가질 수 있습니다 저를 엉망으로 만들지 만, 마우스를 끌 때 수 백 줄을 그립니다.

Line 클래스에 대해 궁금한 점이 있으면 각 도형에 대해 클래스를 만들어야하고 draw() 메서드는 선의 좌표를 사용하여 drawLine()에 배치합니다.

답변

1

ShapeMakerPanel에서 paintComponent()를 재정의하지 마십시오. drawingArea의 클래스에서 재정의하십시오 (drawingArea가 일반 JPanel 인 경우 JPanel의 새 하위 클래스를 작성하십시오). 일반적으로 페인트 할 구성 요소를 서브 클래 싱해야합니다. 또한

+0

사이드 노트 : 대부분의 경우, JPanel은 JComponent에 의해 아직 제공되지 않은 커스텀 페인팅을 전혀 가져 오지 않습니다. –

0

, 나는 모양을 그릴 할 때, 난 단지마다 나는 새로운 일을 시작하기 때문에, 패널이 몇 Custom Painting Approaches를 참조

clean` 닦아, 한 번에 하나를 가질 수 있습니다 이 문제를 해결할 방법이 있습니다.

관련 문제