Вы можете использовать класс Rectangle , используя метод "contains".
Или вы можете создать свой собственный, который по сути работает так:
- Отслеживайте свои ящики, их текущее положение (x, y) и их (ширина, высота)
- Используйте событие mouseClicked (), чтобы получить (x, y) позицию щелчка
- Внутри mouseClicked () прокрутите все поля и проверьте, находится ли щелчок мыши (x, y) внутри поля
Например, если у вас есть два поля на экране:
boxA: (x, y, width, height) = (0, 0, 10, 10)
boxB: (x, y, width, height) = (20, 20, 10, 10)
Это дает вам две коробки, каждая из которых имеет размер 10x10 пикселей. «boxA» имеет верхний левый угол в (0, 0), а «boxB» имеет верхний левый угол в (20, 20).
Если координата события "mouseClicked" (x, y) равна (7, 7), то это находится в пределах "boxA" (поскольку точка (7, 7) находится между (0, 0) и ( 10, 10)
Если координата события "mouseClicked" (x, y) равна (23, 25), то она находится внутри "boxB", потому что (23, 25) находится между (20, 20) и (30, 30)
Вы правы, что getPixelColor слишком медленный для того, что вы пытаетесь сделать. Цикл по списку ящиков будет намного быстрее.
Если вы хотите углубиться в более глубокий пример, вот статья о концепции обнаружения столкновений .