Задать вопрос
@Koshkin_I

Как сделать прерывание по изменению положения курсора мыши?

Здравствуйте!
Хочу прервать поток при изменнени положения курсора. Он ходит по экрану и если его сдвинуть перед следующим ходом поток прервется. Есть такое:
public static void myMouseMove(int x,int y) throws InterruptedException {
        BasicLogic.bufferPoint = new Point(x,y);
        PointerInfo info = MouseInfo.getPointerInfo();
        Point point = info.getLocation();
        int v =(point.x-bufferPoint.x);
        boolean b = bufferPoint.x>250 && v>200;
        if (b ){
            throw new InterruptedException();
        }else {
    //        BasicLogic.bufferPoint = new Point(x,y);
            robot.mouseMove(x, y);

        }
        System.out.println("SM 148 "+BasicLogic.bufferPoint+" "+v +" "+b +" "+point);

    }

Целый день на это пялюсь, ни как не пойму. Всяко уже переставлял ничо не понимаю. Больше всего напрягает,что идея подсказывает, что b всегда false. В логе оно так и есть, НО

SM 148 java.awt.Point[x=695,y=311] 529 false java.awt.Point[x=529,y=74]

почему false?
695 >250 и 529>200
Строку:
BasicLogic.bufferPoint = new Point(x,y);
ставил и вниз и внутрь.) 529 которая совподает с х второй точки эт просто курсор не двигался. Так оно меняется как надо. Но почему ложь? Или я жутко туплю?
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@Koshkin_I Автор вопроса
Так работает:
public static void myMouseMove(int x,int y,boolean flag) throws InterruptedException {     
        PointerInfo info = MouseInfo.getPointerInfo();
        Point point = info.getLocation();
        int v =(point.x-BasicLogic.bufferPoint.x);
        boolean b =BasicLogic.bufferPoint.x>250 && v>200;
        if (b && !flag ){
            System.out.println("SM 147 "+BasicLogic.bufferPoint+" "+v +" "+b +" "+point);
            throw new InterruptedException();
        }else {

            BasicLogic.bufferPoint = new Point(x,y);
            robot.mouseMove(x, y);
            BasicLogic.flagMouseMove = false;
        }
        System.out.println("SM 154 "+BasicLogic.bufferPoint+" "+v +" "+b +" "+point);

    }

Добавил флаг, потому что запускатся по кнопке и он сразу ловит "не те" координаты и останавливается.
Может кому сгодится.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы