簡體   English   中英

你如何檢測鼠標光標是否在java中的JFrame中?

[英]how would you detect if the mouse cursor is inside a JFrame in java?

你會如何編寫一個方法來檢測鼠標光標是否在java中的JFrame中? 如果它在內部,則該方法應返回true,否則返回false。

謝謝,安德魯

假設mouseEnteredmouseExited事件是不夠的(這是我的情況,因為我想避免在鼠標光標進入面板中的按鈕界限時額外調用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);
}

你應該添加一個鼠標監聽器並對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
    }
});

要擴展原始發布中的注釋,可以使用MouseInfo類來獲取鼠標的當前位置。 然后,將此位置與框架上的邊界進行比較,以返回適當的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM