Java学习--绘制画板

题目

在界面上任意选取四个点,分别记为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) {}
}

效果展示

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值