Java-Tasten-Listener in der Befehlszeile

9

Die meiste Demo zeigt keyevent in Swing, was ist das Äquivalent in der Kommandozeile?

    
JohnMax 23.10.2010, 18:56
quelle

4 Antworten

8

Swing unterscheidet sich von einer Befehlszeilenumgebung in dem Sinne, dass Sie keine Ereignisse in einem Konsolenfenster haben. Eine Standard-GUI behandelt Objekte und Ereignisse. Eine Konsole hat keine solche äquivalente Vorstellung.

Was Sie tun haben, ist eine Standardeingabe (sowie eine Standardausgabe), aus der Sie lesen können. Siehe diese Frage , wie man ein einzelnes Zeichen von der Konsole liest (ohne auf eine neue Zeile zu warten) - oder vielmehr, wie das in Java nicht so einfach ist.

Natürlich können Sie das Lesen immer asynchron in einem separaten Thread durchführen. d. h. der Haupt-Thread wird weiterarbeiten, wobei ein Listener-Thread auf den I / O-blockierenden Anruf wartet. Dies kann jedoch nur auf Anwendungsebene implementiert und gehandhabt werden.

    
Yuval Adam 23.10.2010 19:00
quelle
4

Sie können BufferedReader in einer Schleife verwenden:

%Vor%     
man_r 18.06.2012 06:14
quelle
4

KeyListener ist nur für Swing-Klassen.

Um eine gleichwertige Funktionalität in einer Befehlszeilen-App zu erhalten, können Sie das JNativeHook Bibliothek, die dies über JNI erreicht. Auf diese Weise können Sie nach globalen Verknüpfungen oder Mausbewegungen lauschen, die sonst mit reinem Java nicht möglich wären. Sie müssen auch Swing oder andere GUI-Klassen nicht verwenden.

    
Extreme Coders 13.06.2013 09:07
quelle
2

Der folgende Code verhindert, dass die Strg + C-Kombination ein CLI-Java-Programm stoppt.

%Vor%     
javauser71 10.08.2013 00:41
quelle

Tags und Links