是否可以从 JFrame 获取鼠标输入?

Is it possible to get mouse inputs from JFrame?

美好的一天!我试验过 Swing 和 AWT,我偶然发现了 java.swing.JFrame 和 java.awt.event.MouseListener.

基于以下代码:

Game.java

    (...)

    public Game() {
    frame = new JFrame();

    ih = new IH();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 400);
    (...)
    frame.add(this);
    frame.addMouseListener(ih);
}

IH.java

    import java.awt.event.MouseListener;
    import java.awt.event.MouseEvent;

    public class IH implements MouseListener {

       public void mouseClicked(MouseEvent e) {    
            System.out.println(e.getX());
            System.out.println(e.getY());
            System.out.println("Got clicked");
       }

       public void mouseEntered(MouseEvent e) {    }
       public void mouseExited(MouseEvent e) {    }
       public void mousePressed(MouseEvent e) {    }

    }

我没有从控制台收到任何输出,但我也没有收到任何错误。我希望收到我在 JFrame 中单击的位置的 x 和 y 坐标。我怎样才能做到这一点?或者,这在 JFrame 中是不可能的吗?那我该用什么?

在本地进行了测试,它可以正常工作。你用 frame.add(this) 添加什么?

public class Test {

public static void main(String[] args) {
    JFrame t = new JFrame();
    t.setSize(500, 500);
    t.addMouseListener(new IH());
    t.show();
}

public static class IH implements MouseListener{

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println(e.getX());
        System.out.println(e.getY());

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}

}