Как получить положение мыши при щелчке, когда оно находится за пределами компонента?
Я пишу небольшое приложение на Java, которое будет нажимать на десять разных мест на моем экране каждую минуту в течение 10 минут. Но перед тем как щелкнуть, я хочу выбрать места, по которым он щелкнет, щелкнув по экрану и сохранив координаты x & y в массиве.
Я прочитал, что я могу получить его с помощью MouseInfo, однако я хочу получить координаты при щелчке мыши (что может не включать нахождение на компоненте). Так как же это сделать?
Нужно ли создавать прозрачный компонент, который занимает весь экран и получает координаты таким образом? Или есть лучший способ сделать это?
2 ответа
Я решил просто сделать полупрозрачное окно размером с экран (который едва виден) и таким образом собрал положения мыши. Казалось, что это работает, но я надеялся, что мне не придется красить дополнительный компонент.
Подведены итоги (для тех, кто заботится):
- Сделать прозрачное окно
- Пользователь может видеть через окно и может щелкнуть там, где хочет
- Координаты мыши собраны
- Окно отбрасывается
Пока что это мой лучший вариант, если только кто-то еще не упомянет об этом в ближайшее время:)
Попробуй это...
- Используйте событие MouseMoved, чтобы получить положение мыши.
- Постройте прямоугольник в окне или в вашем компоненте, используя класс Rectangle, и сохраните значения.
- В событии MouseClicked получите значения x и y из события перемещения мыши и сравните его с вашим массивом прямоугольников.
- Если значения находятся в диапазоне, выполните действие. (Извините за ошибки грамматики.)
Пример: 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
{
}
}