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();
 }
}

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

(0)

相关推荐

  • java 2d画图示例分享(用java画图)

    Java 2D API通过扩展抽象窗口工具箱(AWT),为Java程序提供了二维图像,文本和图形的功能.这个复杂的渲染包支持线形图像,文本和图形,为富用户界面,复杂绘图程序和图像处理器开发者提供灵活的,功能强大的框架.Java 2D对象出现在一个平面中,称为用户坐标系空间,和设备坐标系空间.当对象在屏幕或打印机中渲染时,用户空间坐标系被转换成设备空间坐标系. 复制代码 代码如下: import java.awt.BasicStroke;import java.awt.Color;import j

  • Java画笔的简单实用方法

    Java中提供了画笔,可以使用画笔做出界面上的任何东西,接下来先熟悉一下画笔的使用过程,以画一条线为例. 源码: import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; /** * 画笔的初始用 * * @author M_WBCG * */ publi

  • java实现gif动画效果(java显示动态图片)

    就是每隔一定的时间显示一张图片,全部图片文件位于:"工作空间\项目名称\bin\动态图\花好月圆\"文件夹下.文件名类似:1001.jpg,1002.jpg,一直到1016.jpg: 复制代码 代码如下: /* * Donttai.java * * Created on __DATE__, __TIME__ */ package 动态图; import java.awt.Graphics;import java.awt.Image;import java.awt.image.Image

  • Java版画板的实现方法

    Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文章较长,但是代码是逐步递进的,可以按三部分分开来看,实现了当前部分再去看下一部分.)首先是画板的界面实现,因为我没有去找具体的图标,界面上的所有组件都是Swing的自带组件,所以界面略微有点简陋,不过如果想要优化也简单,把界面上的组件都改成自定义的图标即可.界面实现后,就可以考虑给界面的组件加上监听

  • JAVA GUI自定义JPanel画板背景

    自定义JPanel面板背景 一.前言 1.GUI全称是Graphical User Interface,就是图形用户界面.JAVA的GUI应用广泛在我们生活中也很常见.很多应用使用该GUI编程设计,像点击QQ图标弹出对应的登录窗体. 一般程序与用户的交互都基于对应程序的运行界面. 2.JPanel面板是SWING下的一个面板容器类.该面板支持嵌套,可设置布局方式,设置不同的布局管理器可添加其他控件像JButton按钮,JTextField文本框等.来设计完善一个程序界面窗体. 作为绘制面板支持s

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

    本文实例主要实现Java拖曳鼠标画线的功能,为了达到画线的功能,分别用implements MouseListener与MouseMotionListener,并且由mousePressed(),mouseReleased()取得鼠标拖曳的开始与结束坐标.这是一个掌握Java鼠标事件的很好的范例. 具体实现代码如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MouseDemo e

  • Python使用pylab库实现画线功能的方法详解

    本文实例讲述了Python使用pylab库实现画线功能的方法.分享给大家供大家参考,具体如下: pylab 提供了比较强大的画图功能,但是函数和参数都比较多,很容易搞混.我们平常使用最多的应该是画线了.下面,简单的对一些常用的划线函数进行了封装,方便使用. # -*- coding: utf-8 -*- import pylab import random class MiniPlotTool : ''' A mini tool to draw lines using pylab ''' bas

  • android中实现在ImageView上随意画线涂鸦的方法

    我实现的思路: 1.继承ImageView类 2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过的点坐标,在ACTION_UP时(即手指离开时,这时一条线已经画完),将所画的线(点的集合)保存在一个集合中 3.重写onDraw方法,利用canvas和所记录下的线和点画出线来 可能我讲的十分笼统,下面来看看实际的代码吧 //代表ImageView上的一点 public class ViewPoint { float x; float y; } //表示一条线

  • java获取鼠标在屏幕上坐标的方法

    介绍 java作为目前最为流行的计算机开发语言之一,学习java是高薪就业的好选择,本文介绍的这个小工具主要是使用MouseInfo类实时获取鼠标的信息,然后再JDialog上显示出来.希望下面的内容介绍,能够让大家对于如何获取鼠标在屏幕上的坐标更加了解,一起来学习下吧. 代码如下: import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JD

  • 超简单的java获取鼠标点击位置坐标的实例(鼠标在Jframe上的坐标)

    1. 在窗口的最上方放置一个JLabel标签,标签中的文本默认为"此处显示鼠标右键点击的坐标" 2. 为Jframe窗口添加一个鼠标事件,当鼠标右键点击窗口时,鼠标的坐标在JLabel标签中显示. java 代码实现 import java.awt.FlowLayout; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import jav

  • C# Winfrom实现Skyline画直线功能的示例代码

    前言: 这里记录了我在学习Skyline二次开发中所遇到的问题,适合刚接触Skyline二次开发的同学查看使用,从逻辑到代码逐一详解,但是还是重在理解,希望对你有所帮助. 1.画线的逻辑: 让我回到TerraExplorer Pro这个软件中尝试画一条线,从每一步操作去发现,到底发生了什么? 1.鼠标左键在3D窗口中选择一个点(确定第一个点的位置). 2.挪动鼠标,在第二个点单击鼠标左键(确定第二个点的位置). 3.按住鼠标左键不放,在3D窗口中挪动地球,松开后发现没有画出线,这时左键单击下一个

  • Jquery实现鼠标移动放大图片功能实例

    本文实例讲述了Jquery实现鼠标移动放大图片功能的方法.分享给大家供大家参考.具体分析如下: 做毕业设计,老师看完小样后,嫌弃我购物车里商品图片太大,不美观,让美化个效果.上网查查代码,修改了一个简单版的. 使用的是jquery, 未使用JavaScript获取鼠标状态,这主要和JavaScript需在标签本身内含写出所调用到的动作,太麻烦了,一会就把自己搞糊涂了,使用jquery技术直接根据标签的id,class等等,就可以辨识出来触发条件,直接作出回应(百度百科上说这是jquery很大的一

  • Java实现画线、矩形、椭圆、字符串功能

    本文讲述了Java实现画线.矩形.椭圆.字符串功能的实例代码.分享给大家供大家参考,具体如下: import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; /** * 增加窗口 画线.矩形.椭圆.字符串 * @author Lixiangjian * */ public class BallGame extends Frame{ //Image sun 代表所得到

  • java实现画图板功能

    本文实例为大家分享了java实现画图板的具体代码,供大家参考,具体内容如下 画图板需要满足的功能有: 画线,画三角形,画矩形,画多边形,画曲线 设置不同颜色的画笔 改变窗口大小或最小化窗口后重新打开时图案不消失 画图方法的编写: 创建一个类,继承JPanel类,重写JPanel的绘制方法,重写方法时写上原有的绘制方法,再添加绘制已有的图形的方法.(为了在改变窗口大小和最小化窗口后再打开时图案不消失) 在画图方法中首先创建一个窗体,设置好各项参数后,将窗体设置边框布局.由于继承了JPanel类,重

  • 基于java实现画图板功能

    本文实例为大家分享了java实现画图板功能的具体代码,供大家参考,具体内容如下 一.介绍 这个画图板主要实现的功能是画矩形(矩形使用的是一个函数画图的方法,这样画出来的图形比较有特点).椭圆.多变形(先画一条直线,鼠标每点击一个地方就会从上一个点连接到点击的点,当鼠标双击时,双击的点会和终点和起点相连).画线.橡皮以及颜色选择器,效果图如下所示: 二.具体实现 本项目主要使用的是java.swing以及java.awt的画图工具来实现.首先显示窗口的建立,先让主类draw继承javax.swin

随机推荐