2016-01-05 27 views
0

下面是一些代码,我最近做了:尝试全球鼠标监听停止运行W/O错误

import java.awt.*; 
import java.awt.event.*; 
import java.awt.Toolkit.*; 
public class Test{ 
    public static void main(String[] args){ 
      Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { 
       public void eventDispatched(AWTEvent e) { 
        if(e instanceof MouseEvent){ 
         MouseEvent event = (MouseEvent)e; 
         if(event.getID() == MouseEvent.MOUSE_PRESSED){} 
          System.out.println("test"); 
         } 
        } 
       } 
      }, AWTEvent.MOUSE_EVENT_MASK); 

    } 
} 

它编译完全没问题。然而,当我运行它时,它会运行约5秒钟,然后退出(没有控制台上的消息),并且当我在短时间内点击我的鼠标程序运行时,没有消息被打印到控制台。我试图增加程序的最大内存,但是,正如我所料,除了稍微长一点的运行时间之外,没有任何变化。谢谢!

+0

不能使用Java的GUI库,以监测全球鼠标整个操作系统,你需要使用某种原生的钩子。 – MadProgrammer

+0

也许像[this](http://stackoverflow.com/questions/3590226/working-example-of-jna-mouse-hook)作为例子 – MadProgrammer

+0

尝试添加'while(true);'在结尾处'main'方法的主体 – AJC

回答

0

至于我可以测试这个工作对我来说

public static void main(String args[]) {             
    Test0 t=new Test0(); 

    t.setVisible(true); 

     Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { 
      public void eventDispatched(AWTEvent e) { 
       if(e instanceof MouseEvent){ 
        MouseEvent event = (MouseEvent)e; 
        if(event.getID() == MouseEvent.MOUSE_PRESSED){} 
         System.out.println("test "+System.currentTimeMillis()); 
        } 
       } 
      }, AWTEvent.MOUSE_EVENT_MASK); 

} 

其中TEST0是一些组件