2014-06-13 2 views
-1

나는 설정 한 특정 모양을 내 마우스에 그려 넣으려고합니다. 나는 그들이 모양을 확장하고 원과 물건을 그려서 어떤 모양을 정의했다. 하지만 패널을 클릭하면 페인트가 흰색 jpanel에 아무것도 넣지 않습니다. 디버거는 모양이 저장되었음을 알립니다.arraylist의 도형 그리기

public void mouseClicked(MouseEvent e) { 
    currentX = e.getX(); 

    currentY = e.getY(); 

    Shape newShape = owner.currentBrush.clone(); 
    picture.add(newShape); 
    repaint(); 
} 
public void paint(Graphics g){ 

     super.paint(g); 
     for(int i = 0; i < myShapes.size(); i++){ 
      picture.get(i).draw(g); 
     } 

    } 

public void draw(Graphics g){ 
     Graphics g2d = (Graphics2D) g; 

     g2d.setColor(Color.BLUE); 

     g2d.fillOval(getX(), getY(), radius, radius); 

     g.drawOval(getX(), getY(), radius, radius); 
    } 
+0

그것이 내가 흰색으로 넣어 내 setBackground의 아래 그림입니다 가능 읽기? –

답변

2

대신 오버라이드 (override) paint() 방법을 사용 JPanel에 대한 paintComponent() 방법.

@Overrie 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    //your custom painting here 
} 

+0

동일한 문제가있는 것 같습니다. @ Override public void paintComponent (Graphics g) { super.paintComponent (g); for (int i = 0; i

+0

최소한의 테스트 가능한 코드를 공유 할 수 있습니까? – Braj

+0

두 그래픽이 같은 위치에서 그려지는 곳에'g.drawOval()'과'g2d.fillOval()'을 사용하는 이유는 무엇입니까? – Braj