如何获得Java应用程序的鼠标位置?

时间:2011-02-26 08:25:44

标签: java swing awt

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应用程序可以窗口化或最大化窗口。

我的代码以某种方式不返回整数。这个事件会随着你好的消息的吐出而消失。

2 个答案:

答案 0 :(得分: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 :(得分: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...
 }
}