MouseListener检测已点击的java

时间:2012-11-03 20:15:58

标签: java user-interface mouse mouseevent mouseclick-event

  

可能重复:
  MouseListener needs to interact with many object Java

我有一个程序,在屏幕上绘制了许多图像,以及其他内容。我有一个鼠标监听器,但是检测屏幕上点击内容的最有效方法是什么?因为如果我从点100px x 50px开始有图像500, 300 @,

对于屏幕上的每个图像,我不能说if (x > 500 && x < 600)等等。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

有效解决此类问题的一种方法是使用QuadTree,这是一种递归细分屏幕的数据结构。这使您只能检查大致在屏幕右侧的图像。

或者更简单的方法是简单地将屏幕细分为四分之一或十六分之一,并将每个图像与其覆盖的屏幕部分“注册”。如果您有相对于屏幕尺寸的任何大图像,这可能效果较差。

如果您的许多图像都是静态的,这可能只会有效,因为四叉树需要在图像移动时重新计算。

你可能会发现,简单地检查每一张图片实际上是足够快的 - 你没有说你有多少张图片,或者目前检查它们的时间有多长......