отловить нажатие ESCAPE

95
09 марта 2021, 17:40

Подскажите пожалуйста, делаю простое консольное приложение, где создается поток который выполняет какое то действие, во время выполнения хочу по нажатию клавиши 'Escape' прекращать выполнение программы. В swing это можно сделать с помощью KeyListener. Можно ли с консоли выполнить данное действие?

Answer 1

Решил данный вопрос с помощью сторонней библиотеки JNativeHook. Может кому то поможет. Так же можно решать с помощью создания паралельных потоков. Оставленный в комментарии ответ по поводу System.in.read() не совсем подходил в данной ситуации, так как он ожидает выполнения действия, и только после этого продолжает выполнение. Идея была, при паралельном выполнении программы, в случае нажатии клавиш клавиатуры, выполнялись определенные действия(хотя может я просто не правильно юзал System.in.read(), а у Вас все получится!!:).

Answer 2

http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

public class AirBallon {
private static int x_location=350;
static JFrame finalMenu=new JFrame();
public static void start1(){
finalMenu.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent evt) {
           switch (evt.getKeyCode() ) {
             case KeyEvent.VK_RIGHT:
                if(x_location>700)
                 break;
                   right(x_location);
                   x_location++;
                   System.out.println(x_location);
                   break;
               case KeyEvent.VK_LEFT:
                   if(x_location<0)
                       break;
                   right(x_location) ;
                   x_location--;
                   break;
               case KeyEvent.VK_UP:
                     up();
                   break;
               default:
               System.out.println("");
           break;}
 private static void right(int k) {
            labe2.setBounds(k, 450, 100, 150);}
}

С java не знаком, пример взял от сюда

READ ALSO
Stream API sorted/foreach

Stream API sorted/foreach

Есть данный кодСуть его такова - пишем в консоль слова через пробел, а программа ищет наиболее часто встречающиеся слова и выводит их в порядке...

107
Конструкция if..else с отрицательным условием

Конструкция if..else с отрицательным условием

Помогите, пожалуйста, прояснить ситуациюЕсть конструкция вида:

85
Странности JS присваивание

Странности JS присваивание

Почему такая конструкция отработает корректно?

72
Зашифрованый текст JS cfemail

Зашифрованый текст JS cfemail

Всем привет, на сайте есть такая запись:

113