资源简介
java GUI awt 实现鼠标绘制矩形,鼠标拖动矩形,鼠标改变矩形大小功能. 其它图形的绘制方法参考: https://blog.csdn.net/xietansheng/article/details/55669157
代码片段和文件信息
package com.test;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import javax.swing.JComponent;
import javax.swing.Jframe;
import javax.swing.JPanel;
public class MouseComponent extends JComponent implements MouseMotionListener {
private Rectangle rect;
private boolean isTopLeft;
private boolean isTop;
private boolean isTopRight;
private boolean isRight;
private boolean isBottomRight;
private boolean isBottom;
private boolean isBottomLeft;
private boolean isDrag;
private boolean isLeft;
//矩形最小宽和高为多少
private final static int RESIZE_WIDTH = 5;
private final static int MIN_WIDTH = 20;
private final static int MIN_HEIGHT = 20;
private static final int SIDELENGTH = 50;//单击增加的矩形大小
private ArrayList squares;//所有的矩形
private Rectangle current;
public MouseComponent() {
this.squares = new ArrayList();
this.rect = null;
addMouseMotionListener(this);
this.addMouseListener(new MouseHandle());// 监听鼠标点击事件
//this.addMouseMotionListener(new MouseMotionHandler());// 监听鼠标移动事件
}
// 如果鼠标单击屏幕的地方有矩形则不绘制矩形
public Rectangle find(Point2D p) {
for (Rectangle r : squares) {
if (r.contains(p))
return r;
}
return null;
}
// 绘制矩形
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for (Rectangle r : squares) {
g2.draw(r);
}
}
// 添加矩形到屏幕
public void add(Point2D p) {
double x = p.getX();
double y = p.getY();
rect = new Rectangle((int) (x - SIDELENGTH / 2) (int) (y - SIDELENGTH / 2) SIDELENGTH SIDELENGTH);
squares.add(rect);
repaint();
}
// 删除矩形
public void remove(Rectangle s) {
if (s == null)
return;
if (s == rect)
rect = null;
squares.remove(s);
repaint();
}
private class MouseHandle extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
rect = find(e.getPoint());
// 当前位置如果有矩形,且点击大于2次,则删除矩形
if (rect != null && e.getClickCount() >= 2)
remove(rect);
}
@Override
public void mousePressed(MouseEvent e) {
rect = find(e.getPoint());
// 当前位置没有矩形则绘制
if (rect == null)
add(e.getPoint());
}
}
private class MouseMotionHandler implements MouseMotionListener {
@Override
public void mouseDragged(MouseEvent e) {
// 如果当前位置有矩形,进行拖拽。
if (rect
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8452 2019-05-28 12:17 MouseComponent.java
相关资源
- mysql数据处理,java用户登录处理
- 法律咨询信息系统(java+jsp+sqlserver)
- Java快速开发平台源码(renren-fast)
- 锐聘学院QST青软JavaWeb十二个打包
- 3.3.6微信支付JAVA版demo
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 基于JAVA_JSP电子书系统(源码+数据库
- Java网络编程知识点总结.xmind
- 一站式Java网络编程 BIO-NIO-AIO资料源码
- jsp讲解
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- Java 仿QQ(附客户端以及服务端源码)
- Java TCP IP Socket
- java定时发送邮件(基于quartz)
- Java Swing开发的《星际争霸》游戏
- java+数据库商品交易管理系统(附数据
- 使用java语言编译一个计算器
- java swing工资管理系统(源码+数据库
- JAVALibrary
- 微信企业号回调模式Java版
- 顺丰丰桥接口开发详细教程源码含下
- Java博客概要设计文档
- 药品进销存管理系统(论文范文_JSP
- 奖学金管理系统java+jsp+mysql
- 毕设参考——基于java酒店管理
- Java写的一个简单的字体更改程序
- java8学习教程之lambda表达式的使用方法
评论
共有 条评论