Показать строку всего за несколько секунд с 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(),

Другие вопросы по тегам