问题标签 [mousemotionlistener]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1021 浏览

java - 如何让paintComponent跟随你的鼠标?

以下是我所拥有的,我在一个类中有一个paintComponent方法,

我想让那个图形对象(上)在第二类中跟随我的鼠标,但我不知道如何在我的第二类(下)中调用它,我写了一个第一类的构造函数,但我不知道如何让它出现在我的框架上。PS我在我的框架中添加了mouseMotionListener

请简单解释一下如何调用paintComponent方法,以及为什么(我会尝试理解它,我对继承等不太了解)。可能是因为我是初学者而且我做错了,在阅读 api 和 google 几个小时后我什么也没找到。

0 投票
1 回答
271 浏览

java - 绘制一个可变大小的填充矩形

我正在尝试编写一个代码,在拖动鼠标时绘制一个大小可变的填充矩形。当我运行此代码时,它给了我一个空白窗口。每当我按下并拖动它时它都不会画任何东西。这段代码有什么问题?

0 投票
2 回答
440 浏览

java - 使用鼠标适配器调整 jpopupmenu 的大小

我正在使用Swing 位库向我的 jtable 列标题添加过滤器。该库按预期工作,但右键单击列上出现的 jpopupmenu 不会重新调整大小。(仅允许使用鼠标拖动从右下角重新调整大小)屏幕截图如下所示。

Swing Bits 列过滤器 jpopupmenu

我获取了 swing bits 库源代码来尝试解决这个问题,这就是我发现的。

jpopupmenu 调整大小由 MouseMotionListner 和 MouseListener 处理。基本上,一个 MouseDragged 方法被连续调用,它应该更新 jpopupmenu 的大小,直到鼠标被释放。代码如下所示。

通过一点调试,我意识到问题出在 menu.setPopUpSize(newDim) 方法调用上。

如果没有这段代码,当我尝试重新调整 jpopupmenu 的大小时,mouseDragged() 方法会被连续调用。(应该如此)使用注释的打印语句解决了这个问题。

包含 menu.setPopUpSize(newDim) 后,mouseDragged() 方法只被调用一次。由于某种原因,调用 setPopUpSize 方法后鼠标拖动事件没有再次注册。请注意,该方法不会返回。在该单次调用中,setPopUpSize() 使用更新的 newDim 值稍微重新调整弹出菜单的大小。理想情况下,应该重复调用 mouseDragged() 方法,直到用户释放鼠标拖动操作,不断调整弹出菜单的大小。

我想出的一种解决方法是公开声明 newDim 值并在 mouseReleased() 方法中调用 setPopUpSize(newDim) 方法。这会从鼠标拖动中获取最终坐标,并使用它来重新调整弹出菜单的大小。但这并没有为用户显示边缘的拖动,这是非常不方便的。

任何帮助将不胜感激。

不使用 setPopUpSize(newDim) 方法执行:

重复此模式,直到释放鼠标拖动。

使用 setPopUpSize(newDim) 方法执行:

mouseDragged() 方法只被调用一次。

0 投票
1 回答
31 浏览

java - 我达到了 mouseEntered 限制

我想我已经达到了mouseEntered极限,所以......我可以以某种方式mouseEntered在一堂课中添加两个吗?还是有其他方法?我不会发布代码,它超过了 65535 字节的限制

0 投票
1 回答
31 浏览

java - 使用 MouseMotionListener 在面板之间切换拖动事件 - Java

我遇到了 MouseMotionListener 接口的问题。我想从一个按钮组件开始拖动,我想将它停在程序的另一个区域,即另一个面板中。问题是鼠标的坐标是负数,因为它们以事件开始的组件为原点。所以我想知道,我怎样才能取回引用鼠标所在组件而不是起始组件的坐标?

提前感谢您的帮助。

0 投票
1 回答
142 浏览

java - 如何在快速鼠标光标拖动时绘制重复椭圆的连续曲线?

此代码用于在 JPanel 上绘图。在paintComponent(Graphics)我试图通过重复绘制曲线Graphics2D#fillOval(x, y, with, height)

该应用程序运行正常,当我缓慢拖动鼠标光标时;它根据我的需要绘制一条连续曲线。但是当我加快拖动鼠标光标时,结果是分开的点而不是连续的曲线。

那么即使我加快拖动,如何让它画出一条连续的曲线呢?

0 投票
1 回答
1052 浏览

java - 覆盖抽象方法鼠标事件

我正在尝试跟踪鼠标移动,但收到以下错误:MouseTracker.Handlerclass is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener

0 投票
2 回答
295 浏览

java - 拖动时 JPanel 子类“跳来跳去”

我目前正在编写我的一个小型“绘画”程序;到目前为止,你可以用笔在上面画画,放大到 100 倍,然后选择一种颜色。接下来我想添加的是(或者是)拖动 JPanel 子类的可能性,在该子类上绘制选择要编辑的图像。基本上,通过按住鼠标右键,您可以更改位于 JInternalFrame 上的 JPanel 子类的位置。我有一个应该可以自己正常工作的代码示例;至少它对我有用。要重现该问题,只需启动DragPanelTest类并在带有红色边框的组件上拖动鼠标 - 面板不会平滑拖动,而是一直来回跳跃。

代码:

请注意,我省略了一些System.out.println()@Override命令以稍微缩短代码。

无论如何,如果有人知道我做错了什么/需要改进的地方,我将非常感激!

0 投票
1 回答
80 浏览

java - 使用快速鼠标移动在 Java 2D 中绘图

它会很长,所以提前感谢您阅读和/或回答:)

编辑:这如何在快速鼠标光标拖动时绘制重复椭圆的连续曲线?有一个我不太满意的答案,除了在矩形或椭圆形之间画直线之外,没有其他方法吗?(矩形或椭圆形对我来说无关紧要)。

我已经搜索了很多,但没有找到我要找的东西,所以我们开始吧:我必须为大学创建一个绘图应用程序,我实际上已经完成了,但我的一个问题是 mouseDragged 事件似乎不是足够快地识别运动(?)。这意味着,如果用户用画笔徒手绘制并且鼠标移动得太快,程序将不会绘制“连续的矩形线”。相反,绘图中会有很多间隙。这就是我的paint() 覆盖和mousemotionlistener(对于应该等同于画笔/笔的currentTool 1)的样子:

动听者:

注意:手动定义 addColours(Color c) 函数以将 strokeColour 添加到 strokeColours 和 fillColours 以及将“true”添加到 fillq。penStroke 是通过使用滑块定义的,仅用于此“工具”。

0 投票
3 回答
2899 浏览

java - 不同 JPanel 的鼠标侦听器事件

是否有可能有一个全局鼠标运动侦听器,它根据单击的 JPanel 具有不同的效果(仅使用一个鼠标运动侦听器)?

例如:我有一个 JFrame,其中添加了两个 JPanel 和一个添加到 JFrame 的鼠标运动侦听器。我希望在单击一个 JPanel 时调整屏幕大小,但我希望在单击另一个时拖动 JFrame。我认为这可以使用 JLabel 使用 JLabel 的文本进行检查来完成,与 JButton 相同。

编辑:是的,这绝对不是正确的做事方式,只是想知道是否有可能,如果可以,怎么做?

编辑:为了让事情更清楚一点,我有一个扩展 ActionListener、MouseMotionListener、MouseListener 的类。是否有可能让这个类处理一个 JFrame 的所有事件,该 JFrame 附加了许多不同的 JPanel,并根据按下的 JPanel 做一些不同的事情?(例如有一个附加到 JPanel 的 ID,我可以将 event.getSource() 与之进行比较)