我在组件上有一个MouseListener,想要监听mouseReleased事件,而不需要mousePressed事件。如何检测用户是否按下了我的组件上的另一个按钮,桌面或其他窗口(或其他任何东西)和版本?
例如,在下面的示例中,如何让它打印“酷”而不是“不酷”?
titleBar.addMouseListener(new MouseListener()
{
@Override public void mouseReleased(MouseEvent e)
{
System.out.println("cool");//Detect this
}
@Override public void mousePressed(MouseEvent e)
{
System.out.print("Not ");//Without this having to happen first
}
@Override public void mouseExited(MouseEvent e)
{
}
@Override public void mouseEntered(MouseEvent e)
{
}
@Override public void mouseClicked(MouseEvent e)
{
}
});
答案 0 :(得分:4)
当mousePressed在另一个应用程序上发起时,您无法侦听鼠标。这是因为Java应用程序在释放鼠标时不会有焦点。 Java con只在有焦点时处理事件。
在Java应用程序中,您可以侦听所有mouseReleased事件。但是,在这种情况下,将为生成mousePressed事件的组件生成mouseReleased事件。所以你还需要监听mouseEntered和mouseExited事件。因此,如果mouseReleased事件前面有mouseEntered事件,则需要使用mouseEntered事件的源来获取mouseReleased事件的对象。
为此,您可以使用AWTEventListener。有关详细信息,请参阅Global Event Listeners。