30/09/2018, 17:52

Ghi lại vị trí của mouse trên desktop như thế nào?

Trong java swing, em chỉ mới biết cách ghi lại vị trí của mouse khi nó nằm trong component, nhưng khi di chuyển nó ra ngoài thì không biết cách ghi lại screen position của nó.
Em cần lấy vị trí của mouse trên desktop khi move ra khỏi component luôn ấy

Lễ Bùi viết 19:56 ngày 30/09/2018

Bạn thử cái này này xem
http://alvinalexander.com/java/java-xeyes-mouse-cursor-location-position

Nguyễn Hữu Quyền viết 19:56 ngày 30/09/2018

bạn dùng MouseInfo để lấy thông tin về chuột nhé,
đầu tiên bạn lấy:
PointerInfo pointerInfo = MouseInfo.getPointerInfo();

rồi lấy biến point :
Point point = pointerInfo.getLocation();

sau đó từ point bạn có thể lấy tọa độ X, Y như sau
point.x
point.y

lợi ích khi chuyển về được point là bạn có thể lấy được các
component hoặc kiểm tra luôn là chuột của bạn đã vào vùng component đó hay chưa
thuận tiện cho việc tạo hiệu ứng và làm các phần mền soạn thảo và vẽ biểu đồ.

Chúc bạn học tốt.

... viết 19:55 ngày 30/09/2018

Đã làm được:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MouseMoving implements Runnable {

    private JFrame frame;
    private Point point;
    private boolean finished;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MouseMoving window = new MouseMoving();
                    //window.frame.setVisible(true);
                    Thread thread = new Thread(window);
                    thread.start();
                    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public MouseMoving() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 284, 171);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));
        
        point = new Point(0, 0);
        finished = false;
    }

    @Override
    public void run() {
        while(finished == false)    {
            PointerInfo info = MouseInfo.getPointerInfo();
            point = info.getLocation();
            
            this.frame.setTitle(String.valueOf(point.getX()) + " " + String.valueOf(point.getY()));
            try {
                Thread.sleep(20);
            } catch(Exception e)    {
                System.exit(1);
            }
        }
    }
}
Bài liên quan
0