java - Swing & JavaFX:如何将 JavaFX MouseEvent 转换为 Swing MouseEvent?
问题描述
该包SwingUtilities
有一个很好的功能,convertMouseEvent
将一个组件上的鼠标事件转换为另一个组件上的鼠标事件:
MouseEvent convertedEvent = SwingUtilities.convertMouseEvent(originalComponent, event, otherComponent);
同时,MouseEvent
JavaFX 中有一个方法可以为另一个组件copyFor
创建副本:MouseEvent
MouseEvent convertedEvent = e.copyFor(e.getSource(), otherComponent);
我想做一些类似的事情来将 JavaFx MouseEvent 转换e
为 Swing 鼠标事件。
我找不到烘焙函数,所以我尝试编写自己的函数。不过,有两个字段我无法轻松转换:
- 标识事件的 ID 字段。我想我必须手动转换
e.getEventType().getEventType().getName()
- 在 JavaFX 中,没有指示事件发生时间的“when”属性。看来我可以在这里使用当前系统时间
- 鼠标事件的修饰符。我不确定如何从 JavaFX 事件的属性中构建它们
有没有办法从 的属性中获取修饰符e
?
解决方案
中的函数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)。
推荐阅读
- python - 错误:计算数据框中的出现次数时无需重复
- spring - Spring @Autowired 不起作用,bean 为空
- mongodb - 如何在不损坏任何数据的情况下成功切换到 XFS 文件系统?
- python - 两个相似的递归代码
- django - Django:表单 CSRF 验证失败
- python - 如何从 sqlite3 表中选择某些内容并将其分配给变量?
- python - 发出打印出 __str__() 函数以获取列表类型对象的位置
- sql - MSSQL创建具有多个条件的组
- python - 如何获取电子邮件 gmail python API 的发件人
- python - 在 python 中安装模块或包或其他内容时出错