2011-04-03 62 views
3

我想模擬在Java中到mousePressed事件,我發現我可以使用Robot類這一點,和它的作品,但僅在Windows,而不是在Mac OS X如何在不使用java.awt.robot的情況下模擬mousePressed事件?

有誰知道一個替代的模擬mousePressed事件的方法?

這是我使用的代碼:

Robot robot = new Robot(); 
robot.mousePress(InputEvent.BUTTON1_MASK); 
+0

你在使用Swing嗎? – javanna 2011-04-03 10:24:49

+0

AFAIC機器人需要管理員權限來模擬某些系統上的本機事件。 – josefx 2011-04-03 10:44:55

+0

@javanna是的,我使用swing – Jesse 2011-04-03 10:47:35

回答

2

如果要模擬一個JButton的點擊動作,你可以調用doClick方法,看看here。否則,也許這similar question可以幫助你。 希望這有助於。

+0

'doClick'方法不起作用,點擊發生在JPanel的隨機部分。所以也許我需要創建一個mousepressedEvent,我可以發送到mousePressed方法。我只是不知道如何。 – Jesse 2011-04-03 12:49:57

+0

任何其他想法?我無法修復它.. – Jesse 2011-04-07 08:07:10

+0

您的'mousePressed'事件的代碼應該在'MouseAdapter'實現中。你能手動調用這個對象的方法'mousePressed'來模擬事件嗎? – javanna 2011-04-07 22:33:28

0

這是一個示例代碼,將有所幫助。

private final class ContractMouseAdapter extends MouseAdapter { 

    @Override 
    public void mousePressed(MouseEvent e) { 
     // Do whatever you want. 
    } 

} 

而且在烏爾Swing代碼調用此適配器

MouseAdapter mouseAction = new ContractMouseAdapter(Component); 
+0

我已經是一個mouseAdapter類,問題是如何模擬對它的mousePressed方法的調用。 – Jesse 2011-04-08 07:55:01

1

我有同樣的問題,使用java.awt.robot.mousePress(INT按鈕)不工作在Mac OS X 10.8 通過檢查

int b = InputEvent.getMaskForButton(MouseEvent.BUTTON1); //1024 
int c = InputEvent.BUTTON1_MASK; //8 
// works on mac 
Robot r = new Robot(); 
r.mouseMove(500, 500); 
r.mousePress(1024); 
r.mouseRelease(1024); 
相關問題