是否可以从 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
}
}
}
美好的一天!我试验过 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
}
}
}