【问题标题】:Detect mouse leaving window with processing通过处理检测鼠标离开窗口
【发布时间】:2013-10-23 03:42:15
【问题描述】:

我正在编写一个正在处理的程序,我需要能够检测鼠标何时离开窗口/画布。但是,据我所知,处理与 mouseOut 事件没有任何相似之处。有没有办法使用回调或事件或类似的东西来实现这一点?

【问题讨论】:

    标签: mouseevent processing


    【解决方案1】:

    使用窗口位置和边框的知识,您还可以计算指针是否在框架内。那么你就可以调用你的函数了。

    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。我比我更喜欢这个,我想做点什么但没想到mouseX和mouseY会更新,也没有考虑使用底层java。
    【解决方案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(){}
    

    【讨论】:

      猜你喜欢
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多