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);
}
}