Ответы пользователя по тегу Java
  • Где найти хорошую информацию по EJB?

    Если интересует EJB2 - ничего лучше Head First EJB от Kathy Sierra нету(она кстати есть в свободном доступе)
    А если интересует спецификация EJB3 то кроме офф.документации я видел книжку Beginning EJB 3(тоже наверняка есть в открытом доступе) от Jonathatn Wetherbee.
    Ответ написан
    3 комментария
  • Java. Выход из бесконечного цикла?

    Создай Boolean переменную, а далее посмотри на мой отрывок кода и сделай на подобие его.
    Ах да, это на JavaFX, но переписать под swing не проблема
    public void handle(KeyEvent ke) {
                            if (ke.getCode().getName().equals("F12")) {
                                toExit = false;
                                Thread clicking = new Thread(new Runnable() {
                                    @Override
                                    public void run() {
                                        while (!toExit) {
                                            robot.mousePress(InputEvent.BUTTON1_MASK);
                                            robot.delay(delayVal);
                                            robot.mouseRelease(InputEvent.BUTTON1_MASK);
                                            robot.delay(delayVal);
    
                                        }
                                    }
                                });
                                clicking.start();
                            } else if (ke.getCode().getName().equals("F11")) {
                                toExit = true;
    Ответ написан
    Комментировать
  • Как сделать обработку событий клавиатуры?

    DeadTime
    @DeadTime Автор вопроса
    Проблема решена. Я использовал библиотеку 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"))
    Ответ написан
    Комментировать