2013-06-13 3 views
0

Хорошо, мне нужно сделать кнопку esc или любую кнопку остановить цикл. Я все посмотрел, но не могу найти ответ. Я знаю, что вы можете выйти из JFrame с помощью esc. но как насчет обычного метода? Любая помощь будет большой, спасибо!Как сделать esc остановить метод

Возможно, что-то вроде этого?

public class Stop { 

    private static boolean loop = true; 
    private static int x = 0; 

    public static void main(String[] args) throws InterruptedException { 

     while (loop == true){ 

      if (esc not pressed){ 
       x++; 
       System.out.println(x); 
      } 
      else{ 
       loop = false; 
      } 

     } 

    } 

} 
+1

Я думаю, вам нужно быть в рамке для перехвата событий клавиатуры ... –

+0

Взгляните на [этот пример] (http://stackoverflow.com/questions/17034798/how-to-kill-a-program -with-esc-or-a-button-java/17034860 ​​# 17034860), который использует привязки клавиш для регистрации действия против escape-ключа – MadProgrammer

ответ

1

Вы не сможете поймать key pressed events из программы командной строки. Вам нужно сделать это из GUI-функций (путем применения swing's KeyListener, например).

This похоже, чтобы подтвердить.

+1

Я бы не рекомендовал KeyListener, поскольку он имеет проблемы с фокусом (компонент, на который он зарегистрирован должны не только фокусироваться, но и фокусироваться). Например, 'JPanel' не настраивается по умолчанию. Вместо этого вы должны использовать [Key Bindings] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer

1

Консоль Java не предоставляет никакого способа получения одиночных нажатий клавиш. Вместо этого вход считывается только после нажатия клавиши ввода (то есть для приема символов).

Одним из решений является создание простого приложения Swing в стиле терминала. Таким образом, вы можете использовать KeyListener для проверки событий клавиатуры или, как вы говорите, просто нажмите Esc, чтобы выйти из JFrame.

Кроме того, вы можете проверить Java Curses library, так как я считаю, что он предлагает реализацию для обнаружения конкретных нажатий клавиш в консольных приложениях.

+1

Я бы не рекомендовал KeyListener, так как он имеет проблемы с фокусом (компонент it зарегистрирован, должен не только фокусироваться, но и фокусироваться). Например, 'JPanel' не настраивается по умолчанию. Вместо этого вы должны использовать [Key Bindings] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer

+0

+1, должным образом отмеченный. Curses по-прежнему остается правильным выбором, ценой привязки к внешней библиотеке. – voidHead

+0

Согласовано. Недостаточно контекста для принятия правильных рекомендаций, но в консоли я думаю, что это единственный выбор, который я знаю о – MadProgrammer