2016-01-05 46 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是一些組件