0

JFRame でマウスで線を引く必要があります。これが私のメソッドpaintComponentです:

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

これは、インターフェイス MouseMotionListener および MouseListener から実装したメソッドに基づいています。

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

アイデアは、ポイントを収集し、それらの間に線を引くことです。これにより、直線ではなく曲線が得られます。私がしている論理的な間違いを見つけるのを手伝ってもらえますか?

ありがとうございました!

4

1 に答える 1

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

}

于 2012-11-01T19:29:08.603 に答える