Отслеживать изменение Point мыши за пределами Фрейма - Java

Узнай цену своей работы

Формулировка задачи:

У меня проблема: пытаюсь реализовать перемещение недекорированного фрема по рабочему столу. такой код выдает "Проблема с переменными позиционирования..." при отпускании мыши за фреймом:
Листинг программы
  1. Double mish1;
  2. Double mish2;
  3. .....
  4. @Override
  5. public void mousePressed(MouseEvent l)
  6. {
  7. mish1 = getMousePosition();
  8. }
  9. @Override
  10. public void mouseReleased(MouseEvent l)
  11. {
  12. mish2 = getMousePosition();
  13. try
  14. {
  15. int mishResultX = (int)(mish2.getX() - mish1.getX());
  16. int mishResultY = (int)(mish2.getY() - mish1.getY());
  17. Launcher.this.setLocation(Launcher.this.getLocation().x + mishResultX, Launcher.this.getLocation().y + mishResultY);
  18. }
  19. catch (Exception ex)
  20. {
  21. System.err.println("Проблема с переменными позиционирования...");
  22. }
  23. }
  24. });
Так как там Point от Фрейма становится null. Как отследить длину ведения мыши в какую-то сторону, не зависимо от того, находится ли она над фреймом. Это что, слушатель на рабочий стол вешать? Или как-то можно именно на мышь? Можно прописать маусЛистенер и как-то связать? Есть короткие примеры?

Решение задачи: «Отслеживать изменение Point мыши за пределами Фрейма»

textual
Листинг программы
  1. import java.awt.event.MouseAdapter;
  2. import java.awt.event.MouseEvent;
  3. import java.awt.event.MouseMotionAdapter;
  4. import javax.swing.JFrame;
  5.  
  6. public class JavaApplication4 extends JFrame {
  7.  
  8.     private int xOnPressed;
  9.     private int yOnPressed;
  10.    
  11.     public JavaApplication4() {
  12.         setUndecorated(true);
  13.         setSize(100, 100);
  14.        
  15.         addMouseMotionListener(new MouseMotionAdapter() {
  16.             @Override public void mouseDragged(MouseEvent e) {
  17.                 setLocation(getX() + e.getXOnScreen() - xOnPressed, getY() + e.getYOnScreen() - yOnPressed);
  18.                 xOnPressed = e.getXOnScreen();
  19.                 yOnPressed = e.getYOnScreen();
  20.             }
  21.         });
  22.         addMouseListener(new MouseAdapter() {
  23.             @Override public void mousePressed(MouseEvent e) {
  24.                 xOnPressed = e.getXOnScreen();
  25.                 yOnPressed = e.getYOnScreen();
  26.             }
  27.         });
  28.     }
  29.  
  30.     public static void main(String[] args) {
  31.         new JavaApplication4().setVisible(true);
  32.     }
  33. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут