我正在使用JLine 2编写一个用Java编写的控制台应用程序。我需要在控制台上显示一个密码,比如10秒,然后擦除它(在GNU终端上)。
我尝试了不同的方法,其中包括:
putString(pass);
Thread.sleep(10*1000);
resetLine();但没有运气。或者文本不显示,或者文本没有被清除。
发布于 2017-02-23 12:36:58
好的,我终于想出了以下内容(类扩展了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()。
https://stackoverflow.com/questions/42385921
复制相似问题