Java设计图形绘制窗口。通过若干按钮控制一个正方形的绘出、删除及面积计算

Java设计图形绘制窗口。通过若干按钮控制一个正方形的绘出、删除及面积计算

package java3.T8;

import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseListener;
import java.util.EventListener;

import javax.swing.JFrame;

import java.awt.event.MouseMotionListener;

public class DrawLineApp extends JFrame implements MouseListener, MouseMotionListener {
	/*
	 * 
	 * 绘制界面:
	 * 	paint( ):进行绘图的具体操作,可以通过重写此方法来实现图形绘制
		update( ):用于更新图形,先清除背景、前景,然后再调用paint( )方法。
		repaint( ):用于重绘图形,在组件外形发生变化,
		即大小改变或位置移动时,repaint( )方法立即被系统自动调用,而实际上repaint( )方法是自动调用update( )方法。
		repaint->update->paint
	 * 
	 * */
	
	int startX, startY; // 定义画图的起点x和y坐标
	int endX, endY; // 定义画图的终点x和y坐标
	boolean drawing = false; // 定义是否要画图的判断变量

	public DrawLineApp() {
		super("鼠标画线");
		//在窗口添加鼠标事件
		this.addMouseListener(this);
		//在窗口添加鼠标运动事件(移动,拖曳)
		this.addMouseMotionListener(this);
		//设置窗口大小
		this.setSize(500, 400);
		//显示窗口
		setVisible(true);
		//点击窗口右上角的关闭按钮时,退出程序
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//窗口居中显示
		setLocationRelativeTo(null);
	}
	//该函数用于绘制窗口,系统自动调用
	@Override
	public void paint(Graphics g) {
		// super.paint(g);
		//画线函数(起始坐标(x,y),终止坐标(x,y))
		g.drawLine(startX, startY, endX, endY);
		//drawRect画矩形
//		g.drawRect(x, y, width, height);
		//加载图片
//		g.drawImage(img, x, y, bgcolor, observer)

	}
	//系统自动调用
	@Override
	public void update(Graphics g) {
		this.paint(g);
	}
	//按下鼠标时触发该事件
	@Override
	public void mousePressed(MouseEvent e) {
		this.drawing = true;
		this.startX = e.getX(); //获取鼠标当前位置的x值
		this.startY = e.getY(); //获取鼠标当前位置的y值
	}

	//释放鼠标
	public void mouseReleased(MouseEvent e) {
		
	}

	//鼠标拖曳
	public void mouseDragged(MouseEvent e) {
		if (drawing) {
			this.endX = e.getX();
			this.endY = e.getY();
			//调用repaint函数,其实就是要求系统运行paint函数一次
			this.repaint();
			this.startX = e.getX();// 当前点作为起始点
			this.startY = e.getY();
		}

	}
	//鼠标进入
	public void mouseEntered(MouseEvent e) {
	}
	//鼠标离开
	public void mouseExited(MouseEvent e) {
	}
	//鼠标单击
	public void mouseClicked(MouseEvent e) {
		/*
		 * this.drawing=!this.drawing; this.startX=e.getX(); this.startY=e.getY();
		 */
	}
	//鼠标移动
	public void mouseMoved(MouseEvent e) {
	}
	
	public static void main(String args[]) {
		new DrawLineApp();
	}
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632