Сделать реагирование на кнопку Java

Как сделать так, чтобы пока не нажата клавиша Enter, дальше код не работал. Хочу, так сказать, консольный интерфейс на Java сделать


Ответы (1 шт):

Автор решения: Антон

Если нужно отследить в графическом, то можно воспользоваться таким вариантом.

public void onKeyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_ENTER) {
        System.out.println("Вы нажали Enter");
    }
}

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

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {

            int buttonKeyCode;
            char buttonCharacter;

            while ((buttonKeyCode = System.in.read()) != -1) {
                buttonCharacter = (char) buttonKeyCode;

                if('\n' == buttonCharacter) {
                    System.out.println("Вы нажали Enter");
                }
            }

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

Вот ещё один вариант со StringBuilder:

import java.io.*;

public class Main {

    public static void main(String... args) {

        int charValue;

        StringBuilder builder = new StringBuilder();
        InputStreamReader reader = new InputStreamReader(System.in);

        try {

            while ((charValue = reader.read()) = -1) {
                builder.append((char)charValue);

                if(10 == charValue) {
                    System.out.println(builder.toString());
                    builder.setLength(0);
                }
            }

        } catch(Exception e) {
            e.printStackTrace();
        }

    }
}

Вот вариант через InputStreamReader (со StringBuilder):

import java.io.*;

public class Main {

    public static void main(String... args) {

        StringBuilder builder = new StringBuilder();

        try {

            int buttonKeyCode;
            char buttonCharacter;

            while ((buttonKeyCode = System.in.read()) != -1) {
                buttonCharacter = (char) buttonKeyCode;

                if('\n' == buttonCharacter) {
                    System.out.println("Вы нажали кнопку Enter");
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

UPDATE: Обновил код для обработки клавиш в консоли, т.к. предыдущий вариант был не совсем корректный. Добавил на всякий случай несколько вариантов кода для понимания.

UPDATE #2: С обработкой нажатий стрелок, увы, не подскажу, т.к. я изучал Java для разработки под Android.

→ Ссылка