Java-Tastatureingabe in einer Konsolenanwendung analysieren

8

Ich habe gerade damit angefangen, mit JLine herumzuhacken, um die Zeicheneingabe im Konsolenmodus zu analysieren. Es scheint gut zu funktionieren, aber ich frage mich:

Gibt es in JLine einen nicht blockierenden Weg, um herauszufinden, ob Zeichen verfügbar sind? (also wie kbhit() in Windows).

Ich nehme an, ich könnte Tastatureingaben immer in einen eigenen Thread einfügen, der dann die Tastaturzeichen in einer thread-sicheren Warteschlange dem Hauptthread anbietet, aber das scheint, als wäre es unnötig.

BEARBEITEN : Dies ist ein Zeichen-nach-Zeichen-Parsing. Ich werde keine GUI verwenden. Bei den üblichen InputStream-E / A in Java im Konsolenmodus müssen Sie zuerst die Eingabetaste drücken (z. B. nur die gepufferte Eingabe). Bitte sagen Sie mir nicht, dass Zeicheneingabe im Konsolenmodus in Java unmöglich ist. es ist nicht. JLine verwendet eine portable Schnittstelle mit einer plattformabhängigen Implementierung.

Aktualisierung bearbeiten : Ich konnte eine Hilfsklasse zusammenfügen, um blockierende E / A in einem Arbeitsthread auszuführen (mit JLine für die E / A pro Zeichen), Warnung: Sie müssen parse Ctrl-C selbst!) & amp; Kommunizieren Sie dann über eine synchronisierte Warteschlange mit einer isempty () - Routine. Für das, was ich gerade mache, ist das in Ordnung, aber ich würde gerne einen guten Weg kennen, dies in der Zukunft zu tun.

    
Jason S 05.01.2009, 19:38
quelle

2 Antworten

4

Sie scheinen auf dem richtigen Weg zu sein.

Ich denke, der "richtige" Weg, dies zu tun, ist ein Arbeitsthread, der alle blockierenden E / A in eine nicht blockierende Warteschlange einspeist. Hava einen Blick auf ConcurrentLinkedQueue von java.util.concurrent ."

    
Ed Brannin 09.01.2009, 20:25
quelle
3

Sie können keine Konsole verwenden, um nicht blockierende Eingaben ohne native Bibliotheken zu erhalten.

Sie müssen eine Swing App schreiben und einen KeyListener schreiben

Lesen Sie dieses Tutorial: Ссылка

    
Pyrolistical 05.01.2009 19:48
quelle

Tags und Links