本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

使用 mouseClicked() 时也计算拖动的鼠标坐标?

发布于2021-11-15 11:02     阅读(673)     评论(0)     点赞(4)     收藏(1)


当我使用该方法时,发生了一些非常奇怪的事情:

public void mouseClicked(MouseEvent evt)

我计算点击次数,每次点击一两次时,我都会获取 (x,y) 坐标并将该坐标添加到我的列表中。但是当我查看给定的图片时,我看到添加的坐标也是拖动坐标,即用户用鼠标经过但没有点击或双击的位置。

怎么可能 ?

这个问题与我之前关于多边形的问题有关,这个问题似乎是我的问题的原因。

这是图片: 关闭多边形

在此处输入图片说明

当我开始画别的东西时:

在此处输入图片说明

意思是,那是同一个多边形,只是这次鼠标移动但没有点击/双击的坐标也被计算在内。

这就是我刚才的问题。

任何想法对问题的根源将不胜感激。

编码 :

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JPanel;


/**
 * 
 * @author X2
 *
 */
public class Poly
{
    public static void main (String[] args)
    {
     JFrame frame = new JFrame("Draw polygons");
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setContentPane(new DrawingPanel());
     frame.pack();
     frame.setVisible(true);
 }
}

谢谢


解决方案


我不完全确定确切的问题是什么,但您不应该在paintComponent.

polygonDonetrue(顺便说一句,你可以简单地写if(polygonDone)),你正在向Edges你的模型添加新的。这听起来很糟糕,因为您无法控制何时paintComponent被调用,也无法控制被调用的次数。因为在mouseMoved你调用中repaint(),这最终会触发对 的调用paintComponent,创建新的边等......问题一定出在该代码的某个地方。停止在paintComponent.

作为一般规则,您不应在 期间修改组件状态paintComponent,仅在用户输入时(MouseEvent、KeyBoard 事件(通过 KeyBindings))。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/322432/cebba482cb1146b757b4/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)