java—是否可以从jframe获取鼠标输入?

ukdjmx9f  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(390)

很好的一天!我在试验swing和awt,偶然发现java.swing.jframe和java.awt.event.mouselistener。
基于以下代码:

游戏.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) {    }

    }

我还没有从控制台收到任何输出,尽管我也没有收到任何错误。我希望收到的x和y坐标上我点击在jframe。我该怎么做?或者,在jframe中不可能实现这一点吗?那我应该用什么?

0md85ypi

0md85ypi1#

在当地进行了测试,效果良好。你加了什么 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

    }

}

}

相关问题