【问题标题】:Swing: Delegate events to child components of transformed parentSwing:将事件委托给转换后的父组件的子组件
【发布时间】:2013-05-13 11:05:15
【问题描述】:

我有一个自定义组件GameViewCanvas extends JPanel,它将容纳许多图块(800x800 纹理)。现在在 GameViewCanvas 中,我重写了 paint() 方法,这样它就会在转换后的画布上绘制孩子(缩放、平移和旋转)。

我现在想将诸如 MouseEvent 和 MouseMotionEvent 之类的事件委托给各自的孩子——当然问题是 Swing 不知道孩子在实际框架上的位置。我想我也许可以在父级中重写像 getComponentAt 这样的方法,但没有这样的运气 - 我认为 Swing 是直接循环遍历子级?

也许我做错了,所以请指教。 提前致谢。

【问题讨论】:

  • 有趣的问题,1+。我不知道解决方案,但如果这是我的问题,我会搜索 Swing 源代码,看看是否能给我一个线索。
  • Google JXLayer(在 Java 7 中也称为 JLayer)。这正是你刚才问的。因为它们已经从网上消失了,所以我提供了所有示例 here

标签: java swing events transformation delegation


【解决方案1】:

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

Piet Blok 有一些出色的例子,不幸的是,这些例子已经从网上消失了。为此,我已将它们提供给 here

查看 pbjar 源代码中的 TestWrapped 演示。这可能是(其中)最好的例子。

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

【讨论】:

  • 谢谢!这似乎解决了委托问题。但是,由于我现在在 LayerUI 中进行转换,因此画布会根据 JLayer 组件的边界进行裁剪,因此当我缩小时,实际上只绘制了部分可用空间。
猜你喜欢
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 2012-05-16
  • 2016-04-20
  • 2015-11-02
  • 1970-01-01
相关资源
最近更新 更多