Как получить положение мыши при щелчке, когда оно находится за пределами компонента? - PullRequest
0 голосов
/ 27 августа 2011

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

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

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

Ответы [ 2 ]

4 голосов
/ 27 августа 2011

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

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

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

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

MouseClicked Event:

// 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
    {

    }
}
0 голосов
/ 28 августа 2011

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

Суммировано (для тех, кто заботится):

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

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

...