Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Можно ли протестировать в java зажата кнопка или нет?

#java #javafx


Можно ли протестировать в java зажата кнопка или нет, например если я зажму кнопку
W, то k=1, а если отожму то k=0?
Если можно пример.
Вот код моей кнопки:

if (ke.getCode().getName().equals("W")) {
                k = 1;
            }

                switch (k) {
            case 1:// W
                gc.drawImage(fon, 0, 0, 1280, 720);

                koy = koy - SPEED;
                gc.setFill(Color.BLACK);
                gc.fillOval(kox - 5, koy - 5, kord + 10, kord + 10);

                gc.setFill(Color.YELLOWGREEN);
                gc.fillOval(kox, koy, kord, kord);
                for (int l = 0; l < 26; l++) {
                    if (koy == prom1[l] - kord) {
                        koy = koy + 720 + kord;
                    }
                }
                break;}

    


Ответы

Ответ 1



Да можно. Ловите ваш ивент на Scene,Layout-e: setOnKeyPressed() - При ножатии кнопки. setOnKeyReleased() - При отжатии кнопки. А пишите это как то вот так: scene.setOnKeyPressed(event -> { if(event.getCode() == KeyCode.W){ //do_something } scene.setOnKeyReleased(event -> { if(event.getCode() == KeyCode.W){ //do_something } });

Ответ 2



Используйте метод setOnKeyPressed. В данном случае будет что-то типо такого: node.setOnKeyPressed(ke - > { switch (ke.getCode()) { case KeyCode.W: gc.drawImage(fon, 0, 0, 1280, 720); koy = koy - SPEED; gc.setFill(Color.BLACK); gc.fillOval(kox - 5, koy - 5, kord + 10, kord + 10); gc.setFill(Color.YELLOWGREEN); gc.fillOval(kox, koy, kord, kord); for (int l = 0; l < 26; l++) { if (koy == prom1[l] - kord) { koy = koy + 720 + kord; } } break; } });

Комментариев нет:

Отправить комментарий