使用jLine的Java控制台应用程序

时间:2016-08-14 13:34:59

标签: java console-application jline jline2

我有一个多线程java控制台应用程序。其中一个线程是读取用户的输入,而其他线程则向控制台打印一些数据。当用户输入输入时,当作者线程打印某些内容时,会出现问题。它会中断用户。

我在输出的开头写了“\ r”以清除该行以获得更好的效果。但是,我还要打印到下一行用户键入的内容,直到那一刻。

例如,我想输入123456作为输入。但是当我输入123时,

>123

编写器线程打印“OUTPUT”。

>OUTPUT
>

我想显示我之前键入的内容(“123”)然后我将输入剩余的输入。

>OUTPUT
>123

我被建议使用jLine。但我无法实现它。您能通过提供jLine库的示例用法或建议替代解决方案来帮助我吗?

不阻止编写器线程很重要。它必须在到达时打印输出。

1 个答案:

答案 0 :(得分:1)

你必须做这样的事情:

java.lang.ClassCastException: com.vaadin.data.util.sqlcontainer.RowId cannot be cast to ua.bdproject.nameproject.Customer

它将覆盖现有的提示和用户输入,追加新行,然后重新绘制下面的提示和用户输入。

你可以像这样使用它:

private synchronized static void println(ConsoleReader in, String text) throws IOException {
    in.printString("\r");

    in.printString(text + "\n");

    in.redrawLine();
    in.flushConsole();
}

这有一些问题。例如,长输入将#34;伸出"从添加的文字下方。您可以使用退格键或" \ 033 [2K"逃生命令。