Frage

Ich habe gerade erst begonnen Herumspielen mit jline Zeicheneingabe im Konsolenmodus zu analysieren. Es scheint gut zu funktionieren, aber ich frage mich:

Gibt es eine nicht-blockierende Art und Weise in jline, um herauszufinden, ob Zeichen verfügbar sind? (Dh wie kbhit() in Windows.)

Ich glaube, ich immer die Tastatureingabe in einem eigenen Thread wickeln könnte, die dann in einer Thread-sichere Warteschlange an den Haupt-Thread die Tastaturzeichen bieten, aber das scheint, wie es nicht notwendig sein sollte.

Bearbeiten : Dies ist Zeichen-für-Zeichen-Parsing. Ich werde nicht eine GUI verwenden. Die übliche Input I / O in Java im Konsolenmodus erfordert, dass Sie die Enter-Taste zuerst (z es gepuffert Eingang) zu treffen. Bitte erzählen Sie mir nicht Zeichen-für-Zeichen-Eingabe im Konsolenmodus in Java nicht möglich ist; es ist nicht. Jline hat es eine portable Schnittstelle mit einer plattformabhängigen Implementierung verwendet wird.

Bearbeiten Update : Ich konnte zusammen eine Hilfsklasse hacken die Blockierung I / O in einem Arbeitsthread (mit jline für die pro-Zeichen I / O, Warnung zu tun: Sie müssen parsen Ctrl-C selbst!) & dann über eine synchronisierte Warteschlange mit einer isempty () -Routine kommunizieren. Für das, was ich jetzt tue das ist in Ordnung, aber ich würde wirklich einen guten Weg, zu wissen, wie diese in der Zukunft zu tun.

War es hilfreich?

Lösung

Sie scheinen auf dem richtigen Weg zu sein.

Ich denke, der „richtige“ Weg, dies zu tun, ein Worker-Thread ist, dass alle die Blockierung gießt I / O in eine nicht-blockierende Warteschlange. Hava ein Blick auf ConcurrentLinkedQueue java.util. gleichzeitig .

Andere Tipps

Sie können eine Konsole benutzen Sie nicht blockierende Eingabe ohne native Bibliotheken.

Sie erhalten eine Swing-App schreiben müssen und schreiben Sie eine KeyListener

Bitte lesen Sie diese Anleitung: http://java.sun.com/docs/books/ tutorial / uiswing / events / keylistener.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top