0

我正在使用JLine 2用 Ja​​va编写控制台应用程序。我需要在控制台上显示密码 10 秒,然后将其删除(在 GNU 终端上)。

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

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

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

4

1 回答 1

0

好的,我终于想出了以下内容(类 extends 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().

于 2017-02-23T12:36:58.940 回答