Проблема решена. Я использовал библиотеку awt KeyListener, но не реализовал для него 3 метода keyPressed, keyReleased, keyTyped. Поэтому я использовал библиотеку javafx.scene.input.KeyEvent.
Для того, что бы слушать нажатие клавиши пробел в JavaFX я использовал след.код:
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.input.KeyEvent;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class Main extends Application {
Stage window;
Robot robot;
Scene scene;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setTitle("Кликер");
StackPane layout = new StackPane();
robot = new Robot();
scene = new Scene(layout, 200, 100);
window.setScene(scene);
window.show();
scene.setOnKeyTyped(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
if (ke.getCharacter().equals(" "))
for (int i = 0; i < 3; i++) {
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(300);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(300);
}
}
});
}
}
Вы не сможете ловить таким образом action кнопки (такие как Ctrl, Shift, функциональные кнопки и т.д.). Но setOnKeyPressed и setOnKeyReleased поймает их тоже. Так что, свободно заменяйте эту строку
scene.setOnKeyTyped(new EventHandler<KeyEvent>() {
На эту
scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
Или эту
scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
А проверку на нажатие допустим кнопки F12 заменить такой строкой
if (ke.getCode().getName().equals("F12"))