发布于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
.
当polygonDone
是true
(顺便说一句,你可以简单地写if(polygonDone)
),你正在向Edges
你的模型添加新的。这听起来很糟糕,因为您无法控制何时paintComponent
被调用,也无法控制被调用的次数。因为在mouseMoved
你调用中repaint()
,这最终会触发对 的调用paintComponent
,创建新的边等......问题一定出在该代码的某个地方。停止在paintComponent
.
作为一般规则,您不应在 期间修改组件状态paintComponent
,仅在用户输入时(MouseEvent、KeyBoard 事件(通过 KeyBindings))。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/322432/cebba482cb1146b757b4/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!