2011-02-26 74 views
2
documentDOM.addEventListener("click", new EventListener() { 
          public void handleEvent(Event evt) { 

           if (evt.getType().equals("click")) { 
            System.out.println("hello"); 
            MouseEvent mouseIvent = (MouseEvent) evt; 
            int screenX = mouseIvent.getXOnScreen(); 
            int screenY = mouseIvent.getYOnScreen(); 
            System.out.println("screen(X,Y) = " + screenX + "\t" + screenY); 
           } 
          } 
         }, true); 

我需要在我的Java應用程序中找到特定的像素位置。這個Java應用程序可以是窗口化或最大化窗口。如何獲取Java應用程序的鼠標位置?

我的代碼莫名其妙地不返回整數。當你的消息被吐出時,這個事件會發生。

+0

你必須添加組件上的'MouseListener'監聽鼠標事件零件 – Alpine

回答

4

的關鍵是,你必須添加一個MouseListener到會報告點擊位置的組件:

public class LocationPrinter extends MouseAdapter { 
    public static void main(String args[]) { 
    JPanel panel = new JPanel(); 
    panel.setPreferredSize(new Dimension(300, 200)); 
    panel.addMouseListener(new LocationPrinter()); 
    JFrame frame = new JFrame("Location Window"); 
    frame.getContentPane().add(panel); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 
    } 
    @Override 
    public void mouseClicked(MouseEvent me) { 
    int screenX = me.getXOnScreen(); 
    int screenY = me.getYOnScreen(); 
    System.out.println("screen(X,Y) = " + screenX + "," + screenY); 
    } 
} 
1
//http://www.geekssay.com/java-program-to-get-mouse-coordinates/ 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
class TestInner { 
 private JFrame f; 
 private JTextField tf; 
  
 public TestInner() { 
 f = new JFrame ("Inner classes example"); 
 tf = new JTextField(30); 
 } 
  
 class MyMouseMotionListener extends MouseMotionAdapter { 
 public void mouseDragged(MouseEvent e) { 
 String s = "Mouse dragging: X = "+ e.getX() 
 + " Y = " + e.getY(); 
 tf.setText(s); 
 } 
 } 
  
 public void launchFrame() { 
 JLabel label = new JLabel("Click and drag the mouse"); 
 // add componers to the frame 
 f.add(label, BorderLayout.NORTH); 
 f.add(tf, BorderLayout.SOUTH); 
 // Add a listener that uses an Inner class 
 f.addMouseMotionListener(new MyMouseMotionListener()); 
 f.addMouseListener(new MouseClickHandler()); 
 // Size the frame and make it visible 
 f.setSize(300, 200); 
 f.setVisible(true); 
} 
  
 public static void main(String args[]) { 
 TestInner obj = new TestInner(); 
 obj.launchFrame(); 
 } 
} 
  
class MouseClickHandler extends MouseAdapter { 
  
// We just need the mouseClick handler, so we use 
 // an adapter to avoid having to write all the 
 // event handler methods 
  
 public void mouseClicked(MouseEvent e) { 
 // Do stuff with the mouse click... 
 } 
}