• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JPanelにマウスで自由曲線を描画
*JPanelにマウスで自由曲線を描画 [#n9266a0a]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-12-19~
更新日:&lastmod;

#contents

**概要 [#hbac2d36]
マウスでパネルにお絵かきします。

#screenshot

**サンプルコード [#jb2b9b9e]
 class PaintPanel extends JPanel implements MouseMotionListener, MouseListener {
   private Point startPoint = new Point(-1,-1);
   private Point endPoint   = new Point(-1,-1);
   public PaintPanel() {
     super();
     addMouseMotionListener(this);
     addMouseListener(this);
   }
   public void paintComponent(Graphics g) {
     //super.paintComponent(g);
     Graphics2D g2d = (Graphics2D)g;
     g2d.setStroke(new BasicStroke(3.0F));
     g2d.setPaint(Color.black);
     g2d.drawLine(startPoint.x, startPoint.y,
                  endPoint.x,   endPoint.y);
     startPoint = endPoint;
   }
   public void mouseDragged(MouseEvent e) {
     endPoint = e.getPoint();
     repaint();
   }
   public void mousePressed(MouseEvent e) {
     startPoint = e.getPoint();
   }
   public void mouseMoved(MouseEvent e) {}
   public void mouseExited(MouseEvent e) {}
   public void mouseEntered(MouseEvent e) {}
   public void mouseReleased(MouseEvent e) {}
   public void mouseClicked(MouseEvent e) {}
 }

-&jnlp;
-&jar;
-&zip;

**解説 [#t35e18f2]
上記のサンプルでは、短い直線をパネル上に描画することで、お絵かきをしています。

- マウスがクリックされた場所を始点にする
- ドラッグされた時の位置を終点にしてパネルをrepaint
- paintComponentをオーバーライドして、上記の始点、終点で直線を描画
- 次の直線のための始点を現在の終点に変更

**参考リンク [#xd23e0cf]
-[[Painting in AWT and Swing>http://java.sun.com/products/jfc/tsc/articles/painting/#swing]]

**コメント [#j1077dd9]
#comment