Guten Tag,
Ich habe ein Konsolenprojekt, bei dem der Benutzer die Richtungstasten der Tastatur (nicht numerisches Tastenfeld) drückt, um einen Avatar zu bewegen. Ich habe Schwierigkeiten beim Codieren, um nach dem Drücken dieser Tasten zu suchen. In Pascal war es einfach genug, "readkey" und Code zu verwenden, zum Beispiel für # 80 für den Abwärts-Tastendruck. Ich bin jedoch ratlos, wie ich dieselbe Funktionalität in Java implementieren kann, obwohl ich denke, dass ich die Verwendung von System.in und BufferedInputStream verstehe.
Könnte mir jemand helfen? Ihre Gedanken oder Hinweise werden sehr geschätzt.
Das Konsolenunterstützungsproblem in Java ist allgemein bekannt, ich bin nicht sicher, ob dies machbar ist.
Das war mit System.in zunächst nicht möglich, da es linienbasiert funktionierte.
Sun fügte schließlich eine java.io.Console-Klasse hinzu.
Hier sind seine JavaDocs: Ссылка
Sobald Sie die Konsole (ich denke von System.console) bekommen, können Sie einen Leser und vielleicht lesen Sie Zeichen von ihm, aber ich bin mir nicht sicher, ob es Schlüssel enthält.
Im Allgemeinen sollten Sie Swing oder AWT verwenden, wenn Sie auf die Tastatur zugreifen wollen, was albern ist.
Seit 2007 gab es eine Feature-Anfrage: hier
Leider ist das auf portable Weise nicht möglich:
Unter Windows wird das Lesen von System.in blockiert, bis enter
gedrückt wird, auch wenn Sie kein BufferedReader
verwenden. Pfeile durchlaufen die Befehlsgeschichte. Probieren Sie es selbst aus:
Gleiches Problem mit der Klasse Console
(Eingabe unter Windows gepuffert, Pfeiltasten von Windows interpretiert):
Wenn java.io.console nicht für Sie funktioniert (ich habe das nicht versucht), versuchen Sie JLine . Ich habe damit ein vage ähnliches Problem gelöst.