生物屋さんのためのゼロからのプログラミング

―忘れないための覚書 (たま~に更新)―

マウスでクリックした点を中心に円を描く。

より気楽にROIを描くために、今回のコードを書いてみた。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.event.MouseInputAdapter;

public class PointCircle extends JFrame {

	JPanel pane;
	int r = 10;//円の半径の初期値
	int x0;
	int y0;

	//お絵かき用のフレーム
	PointCircle () {
		pane = new JPanel ();
		pane.addMouseListener (new MouseCheck());
		pane.addMouseMotionListener(new MouseCheck());
		getContentPane().add(pane);
	}

	//お絵かきツール
	class MouseCheck extends MouseInputAdapter {
		public void mousePressed (MouseEvent e) {
			Graphics g = pane.getGraphics();
			r += 3;   //円の半径を"3"ずつ増やす
			x0 = e.getX();
			y0 = e.getY();
			g.setColor(new Color(r, 3*r, 2 * r));
			g.drawOval(x0 - r, y0 - r, 2 * r, 2* r);
		}
	}

	public static void main(String[] args) {
		PointCircle frame = new PointCircle ();
		frame.setTitle("Test");
		frame.setBounds(100, 100, 300, 300);
		frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		}
}

このコードでは、クリックごとに円の半径が"3"ずつ増え、少しずつ色が変化するようにした。

マウスでクリックした点を中心に円を描くコードは、下記の部分。

    g.drawOval(x0 - r, y0 - r, 2 * r, 2* r);