2016-09-11 50 views
2

我有一個簡單的熱鍵程序的Linux。現在,當程序被突出顯示時,它的功能完美,但是當我點擊另一個應用程序時,程序沒有響應。是否有一種方法即使在後臺運行時也總是響應程序?Java如何讓非突出顯示的程序響應熱鍵

import javax.swing.*; 
 
import java.awt.*; 
 
import java.awt.event.*; 
 

 
class ahkkeys extends JFrame { 
 
\t /** 
 
\t \t * 
 
\t \t */ 
 
\t private static final long serialVersionUID = 7564262221986249595L; 
 
\t /** 
 
\t \t * 
 
\t \t */ 
 
\t Robot r; 
 

 
\t public ahkkeys() { 
 
\t \t createAndShowGUI(); 
 
\t } 
 

 
\t private void createAndShowGUI() { 
 
\t \t setTitle("Move Cursor with Keyboard"); 
 
\t \t setDefaultCloseOperation(EXIT_ON_CLOSE); 
 

 
\t \t // hide the visibility 
 
\t \t setUndecorated(true); 
 
\t \t setOpacity(1); 
 
\t \t setVisible(true); 
 

 
\t \t // Create Robot object 
 
\t \t try { 
 
\t \t \t r = new Robot(); 
 
\t \t } catch (Exception e) { 
 
\t \t } 
 

 
\t \t addKeyListener(new KeyAdapter() { 
 
\t \t \t public void keyPressed(KeyEvent e) { 
 
\t \t \t \t if (r == null) 
 
\t \t \t \t \t return; 
 
\t \t \t \t Point p = MouseInfo.getPointerInfo().getLocation(); 
 

 
\t \t \t \t switch (e.getKeyCode()) { 
 
\t \t \t \t // 2::Click right 
 
\t \t \t \t case KeyEvent.VK_2: 
 
\t \t \t \t \t r.mousePress(MouseEvent.BUTTON3_MASK); 
 
\t \t \t \t \t r.mouseRelease(MouseEvent.BUTTON3_MASK); 
 
        break; 
 
\t \t \t \t \t // move down 
 
\t \t \t \t case KeyEvent.VK_3: 
 
\t \t \t \t \t r.mouseMove(p.x, p.y + 55); 
 
        break; 
 
\t \t \t \t // left click 
 
\t \t \t \t case KeyEvent.VK_4: 
 
\t \t \t \t \t r.mousePress(MouseEvent.BUTTON1_MASK); 
 
\t \t \t \t \t r.mouseRelease(MouseEvent.BUTTON1_MASK); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }); 
 
\t } 
 

 
\t public static void main(String args[]) { 
 
\t \t new ahkkeys(); 
 
\t } 
 
}

回答

0

Java並沒有完全提供此功能。

雖然,設置alwaysOnTop可能爲你做的工作 - 不知道你想達到什麼。

如果你需要「更深入」,你將不得不使用一個庫。不幸的是,這些庫不是平臺無關的。您可以使用this topic開始。

0

例如,當我在鍵盤上按「3」時,我的鼠標向下移動。當我按「2」時,右鍵單擊。但當它確實點擊該程序停止工作,因爲我點擊了一個窗口。意思是我點擊了程序。

即使我在程序窗口旁邊的其他窗口中單擊,我也需要它。

相關問題