Java拖曳鼠标实现画线功能的方法

 更新时间:2014年07月29日 14:44:00   投稿:shichen2014  
这篇文章主要介绍了Java拖曳鼠标实现画线功能的方法,需要的朋友可以参考下

本文实例主要实现Java拖曳鼠标画线的功能,为了达到画线的功能,分别用implements MouseListener与MouseMotionListener,并且由mousePressed(),mouseReleased()取得鼠标拖曳的开始与结束坐标。这是一个掌握Java鼠标事件的很好的范例。

具体实现代码如下:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseDemo extends JFrame implements MouseListener,
 MouseMotionListener {
 int flag; //flag=1代表Mouse Moved,flag=2代表Mouse Dragged
 int x = 0;
 int y = 0;
 int startx, starty, endx, endy;//起始坐标与终点坐标
 public MouseDemo() {
 Container contentPane = getContentPane();
 contentPane.addMouseListener(this);
 contentPane.addMouseMotionListener(this);
 setSize(300, 300);
 show();
 addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
  System.exit(0);
  }
 });
 }
 /*由mousePressed(),mouseReleased()取得鼠标拖曳的开始与结束坐标*/
 public void mousePressed(MouseEvent e) {
 startx = e.getX();
 starty = e.getY();
 }
 public void mouseReleased(MouseEvent e) {
 endx = e.getX();
 endy = e.getY();
 }
 public void mouseEntered(MouseEvent e) {
 }
 public void mouseExited(MouseEvent e) {
 }
 public void mouseClicked(MouseEvent e) {
 }
 /*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/
 public void mouseMoved(MouseEvent e) {
 flag = 1;
 x = e.getX();
 y = e.getY();
 repaint();
 }
 public void mouseDragged(MouseEvent e) {
 flag = 2;
 x = e.getX();
 y = e.getY();
 repaint();
 }
 public void update(Graphics g) {
 g.setColor(this.getBackground());
 g.fillRect(0, 0, getWidth(), getHeight()); //清除当前的窗口内容
 paint(g);
 }
 public void paint(Graphics g) {
 g.setColor(Color.black);
 if (flag == 1) {
  g.drawString("鼠标坐标:(" + x + "," + y + ")", 10, 50);
  g.drawLine(startx, starty, endx, endy);
 }
 if (flag == 2) {
  g.drawString("拖曳鼠标价坐标:(" + x + "," + y + ")", 10, 50);
  g.drawLine(startx, starty, x, y);
 }
 }
 public static void main(String[] args) {
 new MouseDemo();
 }
}

该程序在画线过程中,拖拽时会显示鼠标坐标。读者还可以根据自身需求对该程序进行修改和完善,使之更加具有实用性。

相关文章

  • 实现Java删除一个集合的多个元素

    实现Java删除一个集合的多个元素

    Java中的For each实际上使用的是iterator进行处理的。而iterator是不允许集合在iterator使用期间删除的。而我在for each时,从集合中删除了一个元素,这导致了iterator抛出了ConcurrentModificationException,下面来看看到底怎么回事。
    2016-08-08
  • 以实例简介Java中线程池的工作特点

    以实例简介Java中线程池的工作特点

    这篇文章主要介绍了以实例简介Java中线程池的工作特点,线程池是Java实现多线程编程的基础,需要的朋友可以参考下
    2015-09-09
  • java使用反射创建并操作对象的方法

    java使用反射创建并操作对象的方法

    这篇文章主要介绍了java使用反射创建并操作对象的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 利用Java设置Word文本框中的文字旋转方向的实现方法

    利用Java设置Word文本框中的文字旋转方向的实现方法

    Word文档中可添加文本框,并设置文本框为横向文本排列或是纵向文本排列,或者设置文本框中的文字旋转方向等.通过Java程序代码,也可以实现以上文本框的操作.下面以Java代码示例展示具体的实现步骤.另外,可参考C#及VB.NET代码的实现方法,需要的朋友可以参考下
    2021-06-06
  • java实现随机验证码图片生成

    java实现随机验证码图片生成

    这篇文章主要为大家详细介绍了java实现随机验证码图片生成,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • java中有无参数和返回值的方法详解

    java中有无参数和返回值的方法详解

    这篇文章主要介绍了java中有无参数和返回值的方法详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring Boot源码实现StopWatch优雅统计耗时

    Spring Boot源码实现StopWatch优雅统计耗时

    这篇文章主要为大家介绍了Spring Boot源码实现StopWatch优雅统计耗时,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 通过Spring自定义NamespaceHandler实现命名空间解析(推荐)

    通过Spring自定义NamespaceHandler实现命名空间解析(推荐)

    这篇文章主要介绍了通过Spring自定义NamespaceHandler实现命名空间解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 浅谈Springboot整合RocketMQ使用心得

    浅谈Springboot整合RocketMQ使用心得

    本篇文章主要介绍了Springboot整合RocketMQ使用心得,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Java实现输出数字三角形实例代码

    Java实现输出数字三角形实例代码

    大家好,本篇文章主要讲的是Java实现输出三角形实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01

最新评论