以下问题基于以下信息。向下滚动以查看实际问题 - 它专门指控制台输出。
我已经删除了所有内容,并提供了一个简单的程序来重现下面的输出:
import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import javax.swing.JFrame;
public class Main {
static Toolkit tk = Toolkit.getDefaultToolkit();
static long eventMask = AWTEvent.MOUSE_MOTION_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK
+ AWTEvent.KEY_EVENT_MASK;
public static void main(String[] args) {
tk.addAWTEventListener(new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent e) {
System.out.println(e.getID() + ", " + e);
}
}, eventMask);
JFrame test = new JFrame();
test.setBounds(0, 0, 100, 100);
test.setVisible(true);
}
}
您将看到它在控制台中提供以下输出:
500, java.awt.event.MouseEvent[MOUSE_CLICKED,(71,54),absolute(71,54),button=1,modifiers=Button1,clickCount=1] on frame0
501, java.awt.event.MouseEvent[MOUSE_PRESSED,(71,54),absolute(71,54),button=1,modifiers=Button1,extModifiers=Button1,clickCount=1] on frame0
506, java.awt.event.MouseEvent[MOUSE_DRAGGED,(70,54),absolute(70,54),modifiers=Button1,extModifiers=Button1,clickCount=0] on frame0
502, java.awt.event.MouseEvent[MOUSE_RELEASED,(67,54),absolute(67,54),button=1,modifiers=Button1,clickCount=1] on frame0
503, java.awt.event.MouseEvent[MOUSE_MOVED,(67,55),absolute(67,55),clickCount=0] on frame0
503, java.awt.event.MouseEvent[MOUSE_MOVED,(65,91),absolute(65,91),clickCount=0] on frame0
505, java.awt.event.MouseEvent[MOUSE_EXITED,(65,92),absolute(65,92),button=0,clickCount=0] on frame0
我的问题是 - 我怎样才能访问this中的单个实体
[MOUSE_RELEASED,(67,54),absolute(67,54),button=1,modifiers=Button1,clickCount=1]
没有解析出数据?
在我的情况下,我需要全局事件监听器。我以前从未使用过它们,所以我确定这是我忽略的东西。相关问题(这一切都是从哪里产生的),Java check mouse button state
最佳答案
只需检查 e instanceof MouseEvent 并从 MouseEvent 获取所有参数
public void eventDispatched(AWTEvent e) {
if (e instanceof MouseEvent) {
MouseEvent me=(MouseEvent)e;
}
}
long KEY_EVENTS = AWTEvent.KEY_EVENT_MASK;
long MOUSE_EVENTS = AWTEvent.MOUSE_EVENT_MASK;
long MOUSE_MOTION_EVENTS = AWTEvent.MOUSE_MOTION_EVENT_MASK;
关于java - 带有 AWTEventListener 的全局事件监听器以及如何从中提取 MouseEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586098/