在java中,如何检测鼠标光标是否位于JFrame内?

在java中,如何检测鼠标光标是否位于JFrame内?,java,swing,jframe,Java,Swing,Jframe,在java中,如何编写一个方法来检测鼠标光标是否位于JFrame中?如果该方法在内部,则应返回true,否则返回false 谢谢,Andrew您应该添加一个鼠标侦听器,并对鼠标插入事件做出反应: JFrame.addMouseListener( new MouseAdapter() { public void mouseEntered( MouseEvent e ) { // your code here } } ); 将鼠标侦听器添加到JFrame,并查找mo

在java中,如何编写一个方法来检测鼠标光标是否位于JFrame中?如果该方法在内部,则应返回true,否则返回false


谢谢,Andrew

您应该添加一个鼠标侦听器,并对鼠标插入事件做出反应:

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
    }
});

要展开原始帖子中的注释,可以使用MouseInfo类获取鼠标的当前位置。然后将此位置与帧上的边界进行比较,以返回适当的值。

假设
mouseEntered
mouseExited
事件是不够的(我就是这样,因为当鼠标光标在面板中输入按钮边界时,我希望避免额外调用
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);
}

哪一部分你不明白?获取JFrame位置、尺寸、获取当前鼠标位置或将其与JFrame尺寸进行比较?是否有一种方法可以在不获取鼠标坐标和测试鼠标是否在JFrame尺寸范围内的情况下执行此操作?如何处理悬停事件或类似事件?如果其他组件具有鼠标侦听器,则不起作用,因为一旦鼠标移动到其他组件上,就会生成mouseExited()事件。