首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JLine 3-将提示始终保持在底部

JLine 3-将提示始终保持在底部
EN

Stack Overflow用户
提问于 2016-07-15 14:55:03
回答 1查看 2.2K关注 0票数 1

我希望每次在页面底部显示提示符。

我有一个GIF:提示显示不正确

代码是读行的代码:

代码语言:javascript
复制
@Override
public void run()
{
    while (((ElytraServer) ElytraAPI.getServer()).isRunning())
    {
        String cmd;
        ((ElytraServer) ElytraAPI.getServer()).getReader().getTerminal().writer().flush();
        cmd = ((ElytraServer) ElytraAPI.getServer()).getReader().readLine("> ");
        if (!cmd.isEmpty())
        {
            String[] aCMD = cmd.split(" ");
            String[] arguments = Arrays.copyOfRange(aCMD, 1, aCMD.length);
            ElytraAPI.getCommandRegistry().dispatch(ElytraAPI.getConsole(), aCMD[0], arguments);
        }
    }
}

在一根线上。

还有另一个线程:使用JLine 2,代码将提示符保持在底部(但是它出错了!)

代码语言:javascript
复制
public void run()
{
    while (((ElytraServer) ElytraAPI.getServer()).isRunning())
    {
        try
        {
            if (useJline)
            {
                /*
                JLine 2 / Old:
                reader.print(Ansi.ansi().eraseLine(Erase.ALL).toString() + '\n');
                reader.flush();
                 */
                reader.getBuffer().down();
                reader.getTerminal().flush();
                output.write("".getBytes());
                output.flush();

                /* // For JLine2
                try
                {
                    reader.drawLine();
                }
                catch (Throwable throwable)
                {
                    reader.getCursorBuffer().clear();
                }*/

                reader.getTerminal().flush();
            }
            else
            {
                output.write("".getBytes());
                output.flush();
            }
        }
        catch (IOException ioexception)
        {
            Logger.getLogger(TerminalConsoleWriterThread.class.getName()).log(Level.SEVERE, null, ioexception);
        }
    }
}

对于完整的源代码:程序的全部来源

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-21 13:19:23

我发布了一个解决办法与当前代码(只要用户不使用多行输入即可工作)。

代码语言:javascript
复制
reader.getTerminal().puts(Capability.carriage_return);
reader.getTerminal().writer().println("World!");
reader.callWidget(LineReader.REDRAW_LINE);
reader.callWidget(LineReader.REDISPLAY);
reader.getTerminal().writer().flush();

下一个jline版本(3.2)将包含更好的修复。请参阅:https://github.com/jline/jline3/issues/75

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38399230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档