Показать строку всего за несколько секунд с JLine2
Я использую JLine 2 для написания консольного приложения на Java. Мне нужно сделать пароль видимым на консоли, скажем, на 10 секунд, а затем стереть его (на терминале GNU).
Я пробовал разные вещи, среди которых:
putString(pass);
Thread.sleep(10*1000);
resetLine();
но не повезло. Либо текст не отображается, либо текст не очищается.
1 ответ
Решение
Хорошо, я наконец-то придумал следующее (класс расширяется ConsoleReader
):
public boolean showPassword(String pass, int millis) {
try {
resetPromptLine(" password>", pass, pass.length());
Thread.sleep(millis);
if (setCursorPosition(0) && killLine()) resetPromptLine(" password>", "", 0);
} catch (InterruptedException | IOException e) {
e.printStackTrace();
}
return false;
}
я использую resetLine
показать пользовательскую подсказку и пароль; Я также установил курсор на конец строки. Я немного подожду. Я установил курсор на конец строки и "убил строку". Чтобы пароль действительно исчез, я должен позвонить resetPromptLine
снова.
Чтобы дождаться ввода от пользователя против данного времени, используйте readCharacter()
вместо Thread.sleep()
,