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 鼠标事件的事情。
我找不到内置函数,所以我尝试编写自己的函数。虽然有两个字段我无法轻易转换:
- 标识事件的 Id 字段。我假设我必须从
e.getEventType().getEventType().getName()
手动转换
- 在 JavaFX 中没有 "when" 属性 指示事件发生的时间。看来我可以在这里使用当前系统时间
- 鼠标事件修饰符。我不确定如何根据 JavaFX 事件的属性构建这些
有没有办法从 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)。
包 SwingUtilities
有一个很好的函数 convertMouseEvent
,可以将一个组件上的鼠标事件转换为另一个组件上的鼠标事件:
MouseEvent convertedEvent = SwingUtilities.convertMouseEvent(originalComponent, event, otherComponent);
同时,JavaFX 中的 MouseEvent
有一个方法 copyFor
可以为另一个组件创建 MouseEvent
的副本:
MouseEvent convertedEvent = e.copyFor(e.getSource(), otherComponent);
我想做一些类似于将 JavaFx MouseEvent e
转换为 Swing 鼠标事件的事情。
我找不到内置函数,所以我尝试编写自己的函数。虽然有两个字段我无法轻易转换:
- 标识事件的 Id 字段。我假设我必须从
e.getEventType().getEventType().getName()
手动转换
- 在 JavaFX 中没有 "when" 属性 指示事件发生的时间。看来我可以在这里使用当前系统时间
- 鼠标事件修饰符。我不确定如何根据 JavaFX 事件的属性构建这些
有没有办法从 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)。