2013-10-23 53 views
2

我有一個程序,我正在處理中寫入,我需要能夠檢測何時鼠標離開窗口/畫布。但是,據我所知,處理沒有任何類似於mouseOut事件。有沒有什麼辦法可以使用回調或事件或某種性質來完成此操作?檢測鼠標離開窗口與處理

回答

3

使用窗口位置加上其邊界的知識,你也可以計算出,如果指針是內部幀。那麼你可以調用你的函數。

import java.awt.Point; 
import java.awt.MouseInfo; 

java.awt.Insets insets; 
Point mouse, win; 

void setup() { 
    size(400, 400); 
    frame.pack(); 
    smooth(); 
} 

void draw() { 
    setFrame(); 
    if(insideFrame()) { 
    background(95); 
    } 
    else { 
    background(0); 
    } 
} 

//set position of frame 
void setFrame() 
{ 
    mouse = MouseInfo.getPointerInfo().getLocation(); 
    win = frame.getLocation(); 

    if(!frame.isUndecorated()){ 
    //add borders of window 
    insets = frame.getInsets(); 
    win.x += insets.left; 
    win.y += insets.top; 
    } 
} 

boolean insideFrame() { 
    boolean in = false; 
    if(mouse.x-win.x >= 0 && width >= mouse.x-win.x) 
    if(mouse.y-win.y >= 0 && height >= mouse.y-win.y) 
     in = true; 

    return in; 
} 
+1

+1。我比我更喜歡這個,我想做點什麼,但沒有想到mouseX和mouseY會被更新,也沒有考慮使用底層的java。 – kevinsa5

2

看看Java的MouseAdapter類。示例代碼:

import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

void setup(){ 
    frame.addMouseListener(new MouseAdapter(){ 
    public void mouseEntered(MouseEvent e){ 
     print("notify"); 
    } 
    }); 
} 
void draw(){}