Как получить положение мыши при щелчке, когда оно находится за пределами компонента?

Я пишу небольшое приложение на Java, которое будет нажимать на десять разных мест на моем экране каждую минуту в течение 10 минут. Но перед тем как щелкнуть, я хочу выбрать места, по которым он щелкнет, щелкнув по экрану и сохранив координаты x & y в массиве.

Я прочитал, что я могу получить его с помощью MouseInfo, однако я хочу получить координаты при щелчке мыши (что может не включать нахождение на компоненте). Так как же это сделать?

Нужно ли создавать прозрачный компонент, который занимает весь экран и получает координаты таким образом? Или есть лучший способ сделать это?

2 ответа

Решение

Я решил просто сделать полупрозрачное окно размером с экран (который едва виден) и таким образом собрал положения мыши. Казалось, что это работает, но я надеялся, что мне не придется красить дополнительный компонент.

Подведены итоги (для тех, кто заботится):

  • Сделать прозрачное окно
  • Пользователь может видеть через окно и может щелкнуть там, где хочет
  • Координаты мыши собраны
  • Окно отбрасывается

Пока что это мой лучший вариант, если только кто-то еще не упомянет об этом в ближайшее время:)

Попробуй это...

  1. Используйте событие MouseMoved, чтобы получить положение мыши.
  2. Постройте прямоугольник в окне или в вашем компоненте, используя класс Rectangle, и сохраните значения.
  3. В событии MouseClicked получите значения x и y из события перемещения мыши и сравните его с вашим массивом прямоугольников.
  4. Если значения находятся в диапазоне, выполните действие. (Извините за ошибки грамматики.)

Пример: code mousemoved Событие:

x=event.getX();
y=event.getY();

Событие:

// use Event object e or event to get value of 
x=event.getX();
y=event.getY();

// this is more easy than the mousemoved event..
for(...) {
    if(x > rectangle[i].getMin && rectangle[i].getMax < x
             && y > rectangle[i].getMin && rectangle[i].getMax < y)
    {
        // your action..
    }
    else
    {

    }
}
Другие вопросы по тегам