JFrame上的MouseListener

Sav*_*sis 5 java events swing jframe mouseevent

我希望在我的JFrame上收到有关鼠标事件(特别是鼠标输入和退出事件)的通知.但是当我向它添加一个mouselistener时,我得到的是框架边框上的事件,而不是整个框架的内容.

任何想法为什么?

编辑:或者至少你有另一种选择吗?我想要一个"gloabal"方式来捕获JFrame上的鼠标事件.也许一个mouselistener不是答案.

yka*_*ich 6

您可以获取所有事件并检查其源是否是JFrame中的组件.

请参见Toolkit.addAWTEventListener


Sin*_*hot 5

有一个不可见的组件覆盖整个GUI,即"玻璃窗格".你可以将你的听众附加到那里.例:

JFrame frame = new JFrame();
Component glassPane = frame.getGlassPane();
glassPane.addMouseListener(myListener);
Run Code Online (Sandbox Code Playgroud)

如果您希望截获的事件传递到底层组件,则可以重新分发它们.例如:

public void mouseMoved(MouseEvent e) {
    redispatchMouseEvent(e, false);
}
Run Code Online (Sandbox Code Playgroud)