3

您将如何编写一种方法来检测鼠标光标是否在 java 中的 JFrame 内?如果该方法在内部,则该方法应返回 true,否则返回 false。

谢谢,安德鲁

4

4 回答 4

2

要扩展原始帖子中的评论,您可以使用 MouseInfo 类来获取鼠标的当前位置。然后将此位置与框架上的边界进行比较以返回适当的值。

于 2009-12-20T20:30:23.570 回答
2

假设mouseEnteredandmouseExited事件还不够(对我来说就是这种情况,因为我想避免mouseExited在鼠标光标进入面板内的按钮边界时额外调用),我想出了这个简短的检查来添加到我的开头mouseEnteredmouseExited事件处理程序:

public static boolean isMouseWithinComponent(Component c)
{
    Point mousePos = MouseInfo.getPointerInfo().getLocation();
    Rectangle bounds = c.getBounds();
    bounds.setLocation(c.getLocationOnScreen());
    return bounds.contains(mousePos);
}
于 2016-01-19T22:12:15.040 回答
0

您应该添加一个鼠标侦听器并对 mouseEntered-Event 做出反应:

JFrame.addMouseListener( new MouseAdapter() {
    public void mouseEntered( MouseEvent e ) {
        // your code here
    }
} );
于 2009-12-20T20:25:36.843 回答
0

将鼠标侦听器添加到您的 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
    }
});
于 2009-12-20T20:27:58.840 回答