您将如何编写一种方法来检测鼠标光标是否在 java 中的 JFrame 内?如果该方法在内部,则该方法应返回 true,否则返回 false。
谢谢,安德鲁
要扩展原始帖子中的评论,您可以使用 MouseInfo 类来获取鼠标的当前位置。然后将此位置与框架上的边界进行比较以返回适当的值。
假设mouseEntered
andmouseExited
事件还不够(对我来说就是这种情况,因为我想避免mouseExited
在鼠标光标进入面板内的按钮边界时额外调用),我想出了这个简短的检查来添加到我的开头mouseEntered
和mouseExited
事件处理程序:
public static boolean isMouseWithinComponent(Component c)
{
Point mousePos = MouseInfo.getPointerInfo().getLocation();
Rectangle bounds = c.getBounds();
bounds.setLocation(c.getLocationOnScreen());
return bounds.contains(mousePos);
}
您应该添加一个鼠标侦听器并对 mouseEntered-Event 做出反应:
JFrame.addMouseListener( new MouseAdapter() {
public void mouseEntered( MouseEvent e ) {
// your code here
}
} );
将鼠标侦听器添加到您的 JFrame,并查找 mouseEntered 和 mouseExited 事件。
frame.addMouseListener(new MouseListener() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
// do your action here
}
public void mouseExited(java.awt.event.MouseEvent evt) {
// do your action here
}
});