Я работаю в CLI на основе системы тестовых сообщений SMS на базе Java и использую последовательности ANSI Escape для перемещения курсора. В настоящее время у меня открыт сканер в верхней части экрана, и я пытаюсь отобразить входящее сообщение, оставив сканер открытым, чтобы при вводе сообщения входящее сообщение все равно отображалось, и вы могли возобновить ввод с того места, где остановились. ,Единственная проблема заключается в том, что после того, как курсор переместится, чтобы отобразить сообщение и вернуться, если я попытаюсь вернуться на некоторые из тестов, уже находящихся в сканере, текст перемещается вниз и отображается «^ R». Пример:
>before cursor movement
>cursormoved^R
cursormove
Как я могу вернуть часть текста без этого? Код:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Thread t1 = new Thread() {
public void run() {
while (true) {
System.out.print(">");
String message = sc.nextLine();
SendMessages.send(message);
}
}
};
Thread t2 = new Thread() {
public void run() {
while (true) {
String message = RecMessages.recMessage();
if (message != null) {
System.out.print("\0337"); // save cursor position
System.out.print("\n" + message);
System.out.print("\0338"); // restore saved curor position
}
}
}
};
t1.start();
t2.start();
}