题目
在界面上任意选取四个点,分别记为A B C 和 P。
在A B C中随机的选取一个点,和P点取中点,绘制中点,并且将中点记为新的P。
知识点
Graphics 提供了绘图相关的方法,根据绘图所在的组件,在组件可见之后,调用getGraphics的方法
关键代码讲解
package window;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
public class DrawListener implements MouseListener{
Graphics g ;
//设置画布的方法
public void setGraphics(Graphics g) {
this.g = g;
}
//记录坐标使用的数字
int startx,starty,endx,endy;
public void mousePressed(MouseEvent e) {
//记录坐标
startx = e.getX();
starty = e.getY();
}
int i=0;
double[][] a=new double[4][2];
public void mouseReleased(MouseEvent e) {
//记录坐标
endx = e.getX();
endy = e.getY();
//画线
//g.drawLine(startx, starty, endx, endy);
if(i<4)
point(startx, starty, endx, endy);
else{
Random rand = new Random();
int number=100;
while(number>0){
int num=rand.nextInt(3)+1;
switch(num){
case 1:a[3][0]=(a[0][0]+a[3][0])/2;a[3][1]=(a[0][1]+a[3][1])/2;
System.out.println("当前P点的坐标值为"+"("+a[3][0]+","+a[3][1]+")");break;
case 2:a[3][0]=(a[1][0]+a[3][0])/2;a[3][1]=(a[1][1]+a[3][1])/2;
System.out.println("当前P点的坐标值为"+"("+a[3][0]+","+a[3][1]+")");break;
case 3:a[3][0]=(a[2][0]+a[3][0])/2;a[3][1]=(a[2][1]+a[3][1])/2;
System.out.println("当前P点的坐标值为"+"("+a[3][0]+","+a[3][1]+")");break;
}
}
}
}
public void point(int startx, int starty, int endx, int endy){
a[i][0]=endx;
a[i][1]=endy;
System.out.println("当前坐标为"+"("+endx+","+endy+")");
i++;
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}