6

有没有办法调度MouseEvent,就像dispatchKeyEvent使用 KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(listener); 在事件转移到组件之前发生的那样?

我知道我有 2 个选择

1)将鼠标事件添加到所有递归组件

2)使用透明玻璃板

Java 是否支持这一点,还是我必须使用上述选项之一?

谢谢你

4

3 回答 3

9

你试过java.awt.Component.dispatchEvent(AWTEvent)吗?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

JButton jb = new JButton("Press!");
MouseEvent me = new MouseEvent(jb, // which
    MouseEvent.MOUSE_CLICKED, // what
    System.currentTimeMillis(), // when
    0, // no modifiers
    10, 10, // where: at (10, 10}
    1, // only 1 click 
    false); // not a popup trigger

jb.dispatchEvent(me);
于 2010-05-16T02:57:39.913 回答
3

我最后做的是

long  eventMask = AWTEvent.MOUSE_MOTION_EVENT_MASK
         + AWTEvent.MOUSE_EVENT_MASK;
Toolkit.getDefaultToolkit().addAWTEventListener(
         new MouseListener(){....}, eventMask);

谢谢大家

于 2010-05-20T10:38:38.953 回答
1

我终于用了这个:

        a.dispatchEvent(new MouseEvent(a,
                               MouseEvent.MOUSE_MOVED,
                               System.currentTimeMillis() + 10,
                               MouseEvent.NOBUTTON,
                              x,y,
                               0,
                               false));

对参数的一些解释: X 鼠标 X 移动 Y 鼠标 Y 移动 A 是
我希望我对有同样问题的人有所帮助的组件。

于 2012-02-08T15:34:16.183 回答