首页 > 解决方案 > Swing & JavaFX:如何将 JavaFX MouseEvent 转换为 Swing MouseEvent?

问题描述

该包SwingUtilities有一个很好的功能,convertMouseEvent将一个组件上的鼠标事件转换为另一个组件上的鼠标事件:

MouseEvent convertedEvent = SwingUtilities.convertMouseEvent(originalComponent, event, otherComponent);

同时,MouseEventJavaFX 中有一个方法可以为另一个组件copyFor创建副本:MouseEvent

MouseEvent convertedEvent = e.copyFor(e.getSource(), otherComponent);

我想做一些类似的事情来将 JavaFx MouseEvent 转换e为 Swing 鼠标事件。

我找不到烘焙函数,所以我尝试编写自己的函数。不过,有两个字段我无法轻松转换:

有没有办法从 的属性中获取修饰符e

标签: javaswingjavafxmouseevent

解决方案


中的函数SwingEvents很有用。它们可以通过导入访问

import com.sun.javafx.embed.swing.SwingEvents;

要将 JavaFX 转换为 Swing:

SwingEvents.fxMouseButtonToMouseButton(fxEvent): 将 JavaFX 事件转换为 Swing 鼠标按钮。

SwingEvents.fxMouseEventTypeToMouseID(fxEvent): 将 JavaFX 事件转换为 Swing 鼠标 ID。

SwingEvents.fxMouseModsToMouseMods(fxEvent):将 JavaFX 事件转换为 Swing 模块。

从 Swing 转换为 JavaFX:

SwingEvents.mouseIDToEmbedMouseType(swingEvent.getID()):将 Swing 鼠标事件 ID 转换为 JavaFX MouseType。

SwingEvents.mouseButtonToEmbedMouseButton(swingEvent.getButton, swingEvent.getModifiersEx()): 将 Swing 鼠标按钮转换为 JavaFX 鼠标按钮。当前存在漏洞 (JDK-8242419)。


推荐阅读