我正在使用JLine 2用Java编写控制台应用程序。我需要在控制台上显示一个密码,比如10秒,然后将其擦除(在GNU终端上)。
我尝试了不同的东西,其中包括:
putString(pass);
Thread.sleep(10*1000);
resetLine();
但没有运气。文本未显示,或文本未清除。
答案 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()
。