画圆工具(鼠标监听)

package com.lovo;
// 添加画的方法
import java.awt.Graphics;

public interface Drawable {

	void draw(Graphics g);
}
package com.lovo;
// 圆坐标
import java.awt.Color;
import java.awt.Graphics;

public class Circle implements Drawable {
	private int startX, startY;
	private int endX, endY;

	private Color color;

	public Circle() {
		color = MyUtil.getRandomColor();
	}

	public void setStartX(int startX) {
		this.startX = startX;
	}

	public void setStartY(int startY) {
		this.startY = startY;
	}

	public void setEndX(int endX) {
		this.endX = endX;
	}

	public void setEndY(int endY) {
		this.endY = endY;
	}

	@Override
	public void draw(Graphics g) {
		g.setColor(color);
		int x = startX < endX? startX : endX;
		int y = startY < endY? startY : endY;
		g.drawOval(x, y, Math.abs(endX - startX), Math.abs(endY - startY));
	}

}

package com.lovo;

import java.awt.Color;

/**
 * 自定义工具类 颜色
 * @author XWJ
 *
 */
public class MyUtil {

	private MyUtil() { }
	
	public static Color getRandomColor() {
		int r = (int) (Math.random() * 256);	// 0-255
		int g = (int) (Math.random() * 256);
		int b = (int) (Math.random() * 256);
		
		return new Color(r, g, b);
	}
}
<pre name="code" class="java">package com.lovo;
//  画图
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;


@SuppressWarnings("serial")
public class MyFrame extends JFrame {
	private class MouseHandler extends MouseAdapter {

		@Override
		public void mousePressed(MouseEvent e) {
			c = new Circle();
			c.setStartX(e.getX());
			c.setStartY(e.getY());
			c.setEndX(e.getX());
			c.setEndY(e.getY());
		}

		@Override
		public void mouseDragged(MouseEvent e) {
			if(c != null) {
				c.setEndX(e.getX());
				c.setEndY(e.getY());
				repaint();
			}
		}
		
	}
	
	private Circle c = null;
	
	public MyFrame() {
		this.setSize(800, 800);
		this.setResizable(false);
		this.setLocationRelativeTo(null);                        
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	
		MouseHandler handler = new MouseHandler();
		
		this.addMouseListener(handler);
		this.addMouseMotionListener(handler);
	}
	
	
	
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		if(c != null) {
			c.draw(g);
		}
	}

	public static void main(String[] args) {
		new MyFrame().setVisible(true);
	}
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值