Swing:将事件委托给已转换父级的子组件

我有一个自定义组件GameViewCanvas extends JPanel ,它将包含许多区块(800×800纹理)。 现在在GameViewCanvas中我重写了paint()方法,以便它将子项绘制在转换后的canvas上(缩放,平移和旋转)。

我现在想要将像MouseEvent和MouseMotionEvent这样的事件委托给相应的孩子 – 问题当然是Swing不知道孩子们在实际框架中的位置。 我以为我可能只能在父级中覆盖像getComponentAt这样的方法但没有这样的运气 – 我认为Swing直接在子代中循环?

也许我说这一切都错了,所以请建议。 提前致谢。

看看JXLayer 。 它完全符合您的要求。

Piet Blok有一些很好的例子,不幸的是,这些例子已经从网上消失了。 为此,我在这里提供了它们。

看一下pbjar源代码中的TestWrapped演示。 这可能是最好的例子之一。

在此处输入图像描述

ps – JXLayer现在正式成为Java 7的一部分,称为JLayer