多边形绘制
在界面上任意位置画点,将点连成多边形
实现思路
- 实现MouseListener接口,触发点击事件画点
- 定义一个类表示点的信息
- 定义数组存储所有已绘制的点
- 遍历所有的点,并记录x和y的最大值和最小值
- 根据x、y的最大值和最小值确定原点,建立坐标系
- 计算每个点与原点的角度,根据角度排序
- 按顺序连接点
完整代码
定义Point类
x、y为鼠标点击的位置,angle为与原点的角度,为了能直接使用sort方法,需要实现Comparable接口
public class Point implements Comparable{
private int x;
private int y;
private double angle;
public Point(){
}
public Point(int x,int y){
this.x = x;
this.y = y;
this.angle = 0;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public double getAngle() {
return angle;
}
public void setAngle(double angle) {
this.angle = angle;
}
@Override
public int compareTo(Object o) {
Point p = (Point)o;
if (angle<p.getAngle()){
return -1;
}else if (angle == p.getAngle()){
return 0;
}else {
return 1;
}
}
}
实现MouseListener接口,并实现绘制方法