2011-09-05 41 views
1

我在eclipse下使用Junit4。 我想編寫一個測試,它可以是能夠發送的動作:ctrl+shift+Pjava:如何發送加速鍵

我試圖用這個作爲的JTable我不知道哪一個分量,我可以使用sendAcceleratorKey

myTable.sendAcceleratorKey(InputEvent.CTRL, InputEvent.SHIFT_DOWN_MASK) 

但我不能添加第三個參數來說KeyEvent.P

如何發送此操作更改菜單?

謝謝!

+0

什麼是'sendAcceleratorKey()'?您是否在尋找['KeyStroke.getKeyStroke'](http://download.oracle.com/javase/6/docs/api/javax/swing/KeyStroke.html#getKeyStroke%28int,%20int%29)? – trashgod

+0

使用KeyStroke.getKeyStroke,我如何使用Ctrl + Shift + letterKey?謝謝 – lola

回答

4

我猜你可以使用Robot類。

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_SHIFT); 
robot.keyPress(KeyEvent.VK_P); 

Thread.sleep(1000); // Time for your code to react to the event 

assert(...); 

robot.keyRelease(KeyEvent.VK_CONTROL); 
robot.keyRelease(KeyEvent.VK_SHIFT); 
robot.keyRelease(KeyEvent.VK_P); 
+0

aymeric,什麼是機器人類?它是已知的類嗎? – lola

+0

機器人類是J2SE jdk的一部分。完整路徑是java.awt.Robot。基本上,它用來模擬鼠標點擊/移動,關鍵事件,... – aymeric

1

我找不到對sendAcceleratorKey()的任何引用。但是,如果它真的存在,它你想要做什麼,它看起來邏輯,我使用的方法這種方式,用鑰匙調節劑:

myTable.sendAcceleratorKey(InputEvent.CTRL | InputEvent.SHIFT_DOWN_MASK, 
          KeyEvent.VK_P); 

否則,嘗試交換參數,取決於方法簽名。

myTable.sendAcceleratorKey(KeyEvent.VK_P, 
          InputEvent.CTRL | InputEvent.SHIFT_DOWN_MASK); 
+0

否則你有什麼建議? – lola

+0

@lola:你是什麼意思?它不工作嗎? –

+0

不,我的意思是有另一種方式發送加速器ctrl + shift + letterKey? – lola