Сделать реагирование на кнопку 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.