我有一个自定义组件GameViewCanvas extends JPanel
,可以容纳多个图块(800x800纹理)。现在在GameViewCanvas中,我已经覆盖了paint()
方法,因此它将在转换的画布上绘制子项(缩放,平移和旋转)。
我现在想要将像MouseEvent和MouseMotionEvent这样的事件委托给相应的孩子 - 问题当然是Swing不知道孩子们在实际框架中的位置。我想我可能只能在父级中覆盖像getComponentAt
这样的方法,但没有这样的运气 - 我认为Swing直接在孩子们身上循环?
也许我说这一切都错了,所以请建议。 提前致谢。
答案 0 :(得分:4)
看看JXLayer
。它完全符合您的要求。
Piet Blok有一些很好的例子,不幸的是,他们已经从网上消失了。为此,我已将它们提供给here。
查看pbjar源代码中的TestWrapped
演示。它可能是(其中)最好的例子。
ps - JXLayer
现在正式成为Java 7的一部分,称为JLayer