2012-11-01 2 views
0

JFRame에 마우스로 선을 그려야합니다. 다음은 내 방식의 paintComponent입니다 : 내가 인터페이스의 모든 MouseMotionListener와의 MouseListener에서이 내 구현 방법을 기반으로스윙의 자유 선 - 버그 "인덱스 바운드 예외"제거

public void paintComponent(Graphics g){ 
Graphics2D g2d = (Graphics2D) g; 
if(pointCollection.get(0)!=null && pointCollection.get(pointCollection.size())!=null){ 
    g2d.setPaint(Color.BLUE); 
    g2d.setStroke(new BasicStroke(1.5f)); 
    g2d.draw(line2d); 
} 
} 

.

public void mouseDragged(MouseEvent arg0) { 

pointCollection = new ArrayList<Point>(50); 
pointCollection.add(arg0.getPoint()); 
    for (int index = 0; index < pointCollection.size(); index++){ 
    line2d=new Line2D.Double(pointCollection.get(index), pointCollection.get(index+1)); 
    //repaint(); 
    } 
} 

아이디어는 점을 colect 내가 곡선이 아닌 직선 하나를 얻을 수 있도록보다, 그들 inbetween 선을 그릴 것입니다. 내가하는 논리적 실수를 찾아 낼 수있게 도와 줄 수 있니?

감사합니다.

답변

1

컬렉션의 끝 부분을지나갑니다.

public void mouseDragged(MouseEvent arg0) { 

    for (int index = 0; index < (pointCollection.size() - 1); index++){ 
    line2d=new Line2D.Double(pointCollection.get(index), 
     pointCollection.get(index + 1)); 
    //repaint(); 
    } 

은}

+0

는 답 모두 당신에게 길버트 감사합니다! –