TITLE:JPanelにマウスで自由曲線を描画

JPanelにマウスで自由曲線を描画

編集者:Terai Atsuhiro
作成日:2005-12-19
更新日:2021-03-10 (水) 14:36:12

概要

マウスをドラッグしてパネル上に自由曲線を描画します。

#screenshot

サンプルコード

 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;

解説

上記のサンプルでは、パネル上でマウスがドラッグされている場合、その軌跡を短い直線でつなぎ合わせて描画することで、お絵かきしています。

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

コメント