Swing & JavaFX:如何将 JavaFX MouseEvent 转换为 Swing MouseEvent?

Swing & JavaFX: how to convert JavaFX MouseEvent to Swing MouseEvent?

SwingUtilities 有一个很好的函数 convertMouseEvent,可以将一个组件上的鼠标事件转换为另一个组件上的鼠标事件:

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

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

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

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

我找不到内置函数,所以我尝试编写自己的函数。虽然有两个字段我无法轻易转换:

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

SwingEvents中的函数很有用。可以使用 import

访问它们

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 鼠标类型。

SwingEvents.mouseButtonToEmbedMouseButton(swingEvent.getButton, swingEvent.getModifiersEx()):将 Swing 鼠标按钮转换为 JavaFX 鼠标按钮。目前有问题 (JDK-8242419)。