Dieser Eintrag befasst sich mit der zeichenweisen Eingabe, wenn Sie ein Programm schreiben, das auf der Konsoleneingabe / -ausgabe in Java ausgeführt wird.
In Java gibt es Streams, die Standard-E / A verarbeiten, aber Sie können die Eingabe zeichenweise "lesen", aber Sie können Tastendruckereignisse nicht direkt verarbeiten.
Aus diesem Grund wird beispielsweise beim Erstellen eines "Computer" -Programms, wenn Sie "+" drücken, sofort etwas getan, was mit der Standardbibliothek allein nicht erreicht werden kann.
JLine3 ist eine Bibliothek, die bei der Entwicklung von CUI-Anwendungen verwendet werden kann. Es wird auch in einigen bekannten OSS verwendet.
JLine3 unterstützt auch die plattformspezifische Terminalsteuerung in einer Windows-Umgebung. Da hier eine plattformeigene Bibliothek erforderlich ist, wird eine Methode mit JNA oder JANSI bereitgestellt. Dieser Eintrag verwendet JNA.
Wenn Sie den folgenden Code verwenden, können Sie jedes Zeichen über das Terminal eingeben und sofort in der Standardausgabe anzeigen.
package com.hrkt.commandlinecalculator;
import lombok.extern.slf4j.Slf4j;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
@Slf4j
public class CommandlineInterface {
public void run(String... args) {
log.info("hello");
try(Terminal terminal = TerminalBuilder.terminal()) {
int ch = 0;
while ((ch = terminal.reader().read()) != 0x09){
// TAB(0x09)Beenden Sie mit
char c = (char)ch;
System.out.println(String.format("%d, %c", ch, ch));
}
} catch(IOException e) {
log.error(e.getMessage(), e);
}
}
}
Die Bewegung ist wie in der folgenden Abbildung gezeigt.
Dieser Eintrag zeigte Ihnen, wie Sie mit Tastenanschlägen von der Konsole in Java umgehen. Ich sehe Artikel, die JLine2 verwenden, aber es wurde entwickelt und es wird empfohlen, JLine3 zu verwenden.
Ein Arbeitsbeispiel finden Sie unten.
https://github.com/hrkt/commandline-calculator/releases/tag/0.0.2
Recommended Posts