Gibt es eine einfache Möglichkeit, ein einzelnes Zeichen von der Konsole zu lesen, während der Benutzer es in Java eingibt? Ist es möglich? Ich habe es mit diesen Methoden versucht, aber alle warten darauf, dass der Benutzer die Eingabetaste drückt :
char tmp = (char) System.in.read();
char tmp = (char) new InputStreamReader(System.in).read ();
char tmp = (char) System.console().reader().read(); // Java 6
Ich fange an zu glauben , dass System.in keine Kenntnis von der Benutzereingabe , bis Eingabe gedrückt wird.
Sie möchten die Konsole in den "Raw" -Modus versetzen (Zeilenbearbeitung umgangen und keine Eingabetaste erforderlich) und nicht in den "gekochten" Modus (Zeilenbearbeitung mit Eingabetaste erforderlich). Auf UNIX-Systemen kann der Befehl 'stty' verwendet werden Modi wechseln.
In Bezug auf Java ... siehe Nicht blockierende Konsoleneingabe in Python und Java . Auszug:
Wenn Ihr Programm konsolenbasiert sein muss, müssen Sie Ihr Terminal aus dem Zeilenmodus in den Zeichenmodus schalten und daran denken, es wiederherzustellen, bevor Ihr Programm beendet wird. Es gibt keine tragbare Möglichkeit, dies betriebssystemübergreifend zu tun.
Einer der Vorschläge ist die Verwendung von JNI. Auch das ist nicht sehr portabel. Ein weiterer Vorschlag am Ende des Threads und gemeinsam mit dem obigen Beitrag ist die Verwendung von jCurses .
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen