鼠标点击画图
来源:互联网 发布:网络组策略如何打开 编辑:程序博客网 时间:2024/04/30 17:55
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class SupperJFarme extends JFrame{
public SupperJFarme() {
Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
this.setVisible(true);
this.setBounds((dim.width-500)/2, (dim.height-500)/2, 500, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package demo.event.swing;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import javax.swing.JPanel;
public class MouseTest {
public static void main(String[] args) {
new MouseJFrame();
}
}
class MouseJFrame extends SupperJFarme{
public MouseJFrame() {
super();
this.setTitle("鼠标点击绘图");
this.add(new MousePanel());
}
}
class MousePanel extends JPanel{
private ArrayList<Rectangle2D> squares;
private Rectangle2D current;
private static final int SIDELENGTH=10;
public MousePanel() {
squares=new ArrayList<Rectangle2D>();
current=null;
this.addMouseListener(new MouseHandler());
this.addMouseMotionListener(new MouseMotionHandler());
}
//绘图
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
Graphics2D g2d=(Graphics2D) g;
for (Rectangle2D r : squares) {
g2d.draw(r);
}
}
public Rectangle2D finds(Point2D p){
for (Rectangle2D r : squares) {
if(r.contains(p))
return r;
}
return null;
}
//添加方形
public void add(Point2D p){
double x= p.getX();
double y=p.getY();
current=new Rectangle2D.Double(x-SIDELENGTH/2, y-SIDELENGTH/2, SIDELENGTH, SIDELENGTH);
squares.add(current);
repaint();
}
//移除方形
public void remove(Rectangle2D r){
if(r==null)
return;
if(r==current)
current=null;
squares.remove(r);
repaint();
}
//鼠标事件监听
private class MouseHandler extends MouseAdapter{
//鼠标按下事件
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
super.mousePressed(e);
//查找当前鼠标点击的区域是否存在方形
current=finds(e.getPoint());
//如果不存在就添加
if(current==null)
add(e.getPoint());
}
//鼠标点击事件
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
super.mouseClicked(e);
current=finds(e.getPoint());
//如果点击方形存在,以及是双击事件,就移除
if(current!=null && e.getClickCount()>=2)
remove(current);
}
}
//鼠标移动和拖动事件
private class MouseMotionHandler implements MouseMotionListener{
//鼠标拖动时间
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
if(current!=null){
double x=e.getX();
double y=e.getY();
current.setFrame(x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
repaint();
}
}
//鼠标移动事件
public void mouseMoved(MouseEvent e) {
if(finds(e.getPoint())==null)
setCursor(Cursor.getDefaultCursor());
else
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
}
}
- 鼠标点击画图
- java鼠标监听器画图+点击X关闭窗口
- 鼠标画图
- 用鼠标画图
- javascript 鼠标拖拉画图
- javascript 鼠标拖拉画图
- OpenCV之鼠标画图
- OpenCV鼠标画图例程,鼠标绘制矩形
- OpenCV鼠标画图例程,鼠标绘制矩形
- OpenCV鼠标画图例程,鼠标绘制矩形
- unity--鼠标画线、画图实现
- unity--鼠标画线、画图实现
- 模拟鼠标点击事件
- 模拟鼠标点击
- Java模拟鼠标点击
- 实现模拟鼠标点击
- 鼠标点击变灰
- 模拟鼠标点击
- Wp7 Applicationbar 的一些细节
- 标 C 字符串 函数
- python学习笔记:(三)
- PHP的线程安全与非线程安全版本的区别
- 集合常用方法和过程
- 鼠标点击画图
- 连接pc服务器
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
- android 系统 makefile文件(Android.mk)组织结构 .
- java 路径解决方案
- Cookie
- 三、SQL语句映射文件(2)增删改查、参数、缓存
- WP7中image应该怎么存放
- TIME_WAIT是什么?