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をオーバーライドして、上記の始点、終点で直線を描画
  • 次の直線のための始点を現在の終点に変更

参考リンク

コメント