gpt4 book ai didi

java - Swing 和 JavaFX : how to convert JavaFX MouseEvent to Swing MouseEvent?

转载 作者:行者123 更新时间:2023-12-01 17:32:25 27 4
gpt4 key购买 nike

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 中的函数可能很有用。可以通过导入来访问它们

导入 com.sun.javafx.embed.swing.SwingEvents;

从 JavaFX 转换为 Swing:

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

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

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

从 Swing 转换为 JavaFX:

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

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

关于java - Swing 和 JavaFX : how to convert JavaFX MouseEvent to Swing MouseEvent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61094025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com