使用JLine2显示一个字符串几秒钟

时间:2017-02-22 08:10:57

标签: java terminal jline2

我正在使用JLine 2用Java编写控制台应用程序。我需要在控制台上显示一个密码,比如10秒,然后将其擦除(在GNU终端上)。

我尝试了不同的东西,其中包括:

putString(pass); 
Thread.sleep(10*1000); 
resetLine();

但没有运气。文本未显示,或文本未清除。

1 个答案:

答案 0 :(得分:0)

好的,我终于提出了以下内容(课程扩展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()