2011-11-04 12 views
6

Tôi đang cố gắng vẽ Đa giác và muốn có thể nhấp vào Khung hình của tôi để có được MouseCoordinates để biến Hình ảnh tinh thần thành các giá trị x/y nhanh hơn.Tọa độ chuột tương ứng với Frame

Tôi đang sử dụng

System.out.println("("+ MouseInfo.getPointerInfo().getLocation().x +", 
    "+ MouseInfo.getPointerInfo().getLocation().y +")"); 

nhưng điều này cho tôi phối liên quan đến màn hình thực tế của tôi, và không cửa sổ java của tôi.

Làm cách nào để đặt tọa độ hiển thị tương đối so với Cửa sổ Java?

Trả lời

4

Tôi cho rằng bạn thêm một MouseListener vào khung của bạn? Sau đó, bạn chỉ có thể nhận được các tọa độ tương đối với MouseEvent.getPoint

frame.addMouseListener(new MouseAdapter() { 
    void mouseClicked(MouseEvent e) { 
     System.out.println(e.getPoint()); 
    } 
}); 
+0

Nó hoạt động, nhưng nó không cho tôi tọa độ chính xác. Để thử nghiệm nó ra tôi đã vẽ một hình vuông tại x = 50 và 7 = 50 (g.drawRect (50,50,100,100)); và khi tôi nhấp vào góc trên cùng bên trái của hình vuông, nó tiết kiệm cho tôi x = 58 và y = 78 (java.awt.Point [x = 58; y = 78]) – Nyst

+0

Đó là bởi vì bạn nhận được tọa độ chuột liên quan đến JFrame nhưng bạn không vẽ trực tiếp lên khung hình. Bạn có thể vẽ trên một JPanel mà bạn đã thêm vào JFrame. Điều đó có nghĩa là bạn phải thêm MouseListener vào JPanel đó để có được tọa độ đúng. – SpiderPig

+0

xấu của tôi, tôi đã nhận khung và bảng điều khiển bị nhầm lẫn, hiện đã được sửa lại – Nyst

13

Bạn có thể chuyển đổi giữa màn hình và thành phần tọa độ bằng cách sử dụng lớp SwingUtilties

Phương pháp convertPointFromScreen sẽ mất một màn phối hợp và chuyển nó sang được liên quan đến thành phần bạn cung cấp.

+0

đề xuất rất tốt +1 – mKorbel