Swing 重定向摆动鼠标事件

Swing 重定向摆动鼠标事件,swing,redirect,mouse,java-3d,dispatchevent,Swing,Redirect,Mouse,Java 3d,Dispatchevent,我试图使在Java3D画布上显示JavaSwing组件并与之交互成为可能。我通过在缓冲图像上绘制一个透明的JPanel来显示组件,然后使用J3DGraphics2D在画布上绘制该缓冲区 我不知道如何将鼠标事件转发到JPanel中的swing组件。 我希望Canvas3D上的所有键盘和鼠标事件都发送到JPanel,如果它们没有被任何swing组件捕获(例如,鼠标没有在任何组件上),则返回到Canvas3D 我尝试调用Container.dispatchEvent(awteEvent),但它没有成功

我试图使在Java3D画布上显示JavaSwing组件并与之交互成为可能。我通过在缓冲图像上绘制一个透明的JPanel来显示组件,然后使用J3DGraphics2D在画布上绘制该缓冲区

我不知道如何将鼠标事件转发到JPanel中的swing组件。 我希望Canvas3D上的所有键盘和鼠标事件都发送到JPanel,如果它们没有被任何swing组件捕获(例如,鼠标没有在任何组件上),则返回到Canvas3D

我尝试调用Container.dispatchEvent(awteEvent),但它没有成功地将事件分派到适当的组件,即使例如鼠标光标正好位于容器中的按钮上


有人知道怎么做吗?这应该是可能的。

我终于明白了!已经完成了——使用JCanvas3D和JLayeredPane。这与在postRender()中渲染Swing组件的方法相反——JCanvas3D渲染到屏幕外缓冲区,然后使用AWT在屏幕上绘制,创建一个轻量级画布,可以与JLayeredPane中的组件正确交互,即使它们是透明的

需要注意的一件事是——JCanvas3D将所有输入重定向到屏幕外的Canvas3D,但起初我的轨道飞行器不像重量级的Canvas3D那样工作。您所要做的就是将鼠标和键侦听器添加到JCanvas3D,因为如果没有为它们注册的侦听器,AWT甚至不会传递这些事件