不幸的是,沒有辦法直接控制硬件(好吧,其實有爲,但你將不得不使用JNI/JNA),這意味着你不能簡單地檢查一個鍵是否被按下。
您可以使用KeyBindings將空格鍵綁定到一個動作,當空格鍵被按下時您將一個標誌設置爲true
,當它被釋放時您將該標誌設置爲false
。爲了使用此解決方案,您的應用程序必須是GUI應用程序,這不適用於控制檯應用程序。
Action pressedAction = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
spaceBarPressed = true;
}
};
Action releasedAction = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
spaceBarPressed = false;
}
};
oneOfYourComponents.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "pressed");
oneOfYourComponents.getInputMap().put(KeyStroke.getKeyStroke("released SPACE"), "released");
oneOfYourComponents.getActionMap().put("pressed", pressedAction);
oneOfYourComponents.getActionMap().put("released", releasedAction);
然後,使用
try {
Robot robot = new Robot();
if (spaceBarPressed) {
try {
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (InterruptedException ex) {
//handle the exception here
}
}
} catch (AWTException e) {
//handle the exception here
}
由於GGrec寫道,一個更好的方式做這將是直接執行你按下鼠標時,鍵盤事件被觸發:
Action pressedAction = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
try {
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (InterruptedException ex) {
//handle the exception here
}
}
};
你是否試圖實現一個按鍵組合(按住SPACE->按CLICK),或者你想有一個短時間窗口(按下按鍵後)單擊鼠標按鈕? – GGrec
按下空格按鈕後,點擊一下:) –