首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟事件调度线程

模拟事件调度线程
EN

Stack Overflow用户
提问于 2011-07-10 06:02:50
回答 1查看 247关注 0票数 3

在我的应用程序中,我希望将鼠标和键盘事件转发到一个不可见的JPanel,并希望该JPanel像处理来自EDT的事件一样处理它们。这样做的原因是因为应用程序有一个可选的扩展来使用JOGL进行一些渲染。我已经用Swing编写了GUI的东西,所以我想重用这些代码。不幸的是,您不能将Swing与JOGL的GLCanvas混合使用(我可以使用GLJpanel,但这太慢了,无法使用)。JOGL确实有一个特性(Overlay),它允许您绘制到Graphics实例,以便在GL上下文中绘制它。因此,我可以调用jpanel.paint(g)来使用覆盖将其绘制到屏幕上,这很好用。剩下的唯一难题就是以某种方式使用GLCanvas上的鼠标和键盘侦听器来接收和转发事件到JPanel。

我曾尝试使用findComponentAt(mousex,mouse )在JPanel上的特定位置获取一个组件,然后对该组件调用dispatchEvent,但这些组件不会对鼠标单击或任何其他操作做出反应。我假设EDT会将鼠标事件/关键事件转换为ActionEvent,以使按钮和文本字段正常工作。如果最坏的情况发生,我可以测试组件是否是JButton,并使用doClick,这至少会给我一些功能。但这对非按钮组件不起作用,它不会做任何按钮悬停,等等。我知道我可能应该使用HTML工具包(例如,FengGUI),但我依赖于Swing的OpenGL渲染功能,我不想重写那些代码。

我如何正确地从GLCanvas接收MouseEvents,并将它们转发到JPanel,以便进行适当的处理?(例如,按钮的动作侦听器被激活,按钮悬停时显示不同的图形,等等)

任何建议我们都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-10 08:22:14

在中,GlassPaneDemo在方法redispatchMouseEvent()中显示了一种方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6637771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档