Отслеживать изменение Point мыши за пределами Фрейма - Java
Формулировка задачи:
У меня проблема: пытаюсь реализовать перемещение недекорированного фрема по рабочему столу.
такой код выдает "Проблема с переменными позиционирования..." при отпускании мыши за фреймом:
Так как там Point от Фрейма становится null. Как отследить длину ведения мыши в какую-то сторону, не зависимо от того, находится ли она над фреймом. Это что, слушатель на рабочий стол вешать? Или как-то можно именно на мышь?
Можно прописать маусЛистенер и как-то связать? Есть короткие примеры?
Листинг программы
- Double mish1;
- Double mish2;
- .....
- @Override
- public void mousePressed(MouseEvent l)
- {
- mish1 = getMousePosition();
- }
- @Override
- public void mouseReleased(MouseEvent l)
- {
- mish2 = getMousePosition();
- try
- {
- int mishResultX = (int)(mish2.getX() - mish1.getX());
- int mishResultY = (int)(mish2.getY() - mish1.getY());
- Launcher.this.setLocation(Launcher.this.getLocation().x + mishResultX, Launcher.this.getLocation().y + mishResultY);
- }
- catch (Exception ex)
- {
- System.err.println("Проблема с переменными позиционирования...");
- }
- }
- });
Решение задачи: «Отслеживать изменение Point мыши за пределами Фрейма»
textual
Листинг программы
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import javax.swing.JFrame;
- public class JavaApplication4 extends JFrame {
- private int xOnPressed;
- private int yOnPressed;
- public JavaApplication4() {
- setUndecorated(true);
- setSize(100, 100);
- addMouseMotionListener(new MouseMotionAdapter() {
- @Override public void mouseDragged(MouseEvent e) {
- setLocation(getX() + e.getXOnScreen() - xOnPressed, getY() + e.getYOnScreen() - yOnPressed);
- xOnPressed = e.getXOnScreen();
- yOnPressed = e.getYOnScreen();
- }
- });
- addMouseListener(new MouseAdapter() {
- @Override public void mousePressed(MouseEvent e) {
- xOnPressed = e.getXOnScreen();
- yOnPressed = e.getYOnScreen();
- }
- });
- }
- public static void main(String[] args) {
- new JavaApplication4().setVisible(true);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д