首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JLine2中的Bug?ConsoleReader.clearScreen

JLine2中的Bug?ConsoleReader.clearScreen
EN

Stack Overflow用户
提问于 2015-11-14 16:43:55
回答 1查看 267关注 0票数 3

编辑:这个功能只在我调用ConsoleReaderclearScreen方法时发生!任何其他的改变都没有效果。这是JLine2中的一个bug吗?

JLine2:

为什么,当我运行这个命令时,我会得到两个控制台提示直接跟踪对方(----> ---->)?是因为正在创建两个控制台吗?我不明白怎么回事。

我在这里看不到什么?

代码语言:javascript
复制
import java.io.IOException;
import jline.console.ConsoleReader;

class TextUi implements Ui {
    private static final String prompt1 = "---->  ";
    public void homeScreen() {
        try {
            ConsoleReader con = new ConsoleReader();
            con.setPrompt(prompt1);

            con.clearScreen();
            System.out.println("Press any key to continue...");
            con.readCharacter();
            con.clearScreen();

            System.out.println("Here is a prompt. Do something and press enter to continue...");
            String line = con.readLine();
            con.clearScreen();

            System.out.println("You typed: ");
            System.out.println(line);
            System.out.println("Press any key to exit. ");
            con.readCharacter();
            con.clearScreen();
        } catch (IOException e) {
            e.printStackTrace();

        }   
    }   
    public void exitSplash() {
        System.out.println("Thank You. Goodbye.");
        System.out.println("");
    }   
    public void creditsScreen() {
    }   
    public static void main (String argv[]) {
            TextUi ui = new TextUi();
            ui.homeScreen();
            ui.exitSplash();
    }   
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-25 13:25:33

这不是一个bug,您只需要在每次调用con.flush()之后调用con.clearScreen()

clearScreen方法不会自动调用flush() (在某些情况下它可能在不刷新的情况下工作),但是readLine方法会调用,因此只有在调用con.readLine()时屏幕才会清除。这导致最后一个System.out.println (在readLine之前)被清除,即使它是在con.clearScreen()之后调用的。

应该将try块中的代码更改为:

代码语言:javascript
复制
ConsoleReader con = new ConsoleReader();
con.setPrompt(prompt1);

con.clearScreen();
con.flush();
System.out.println("Press any key to continue...");
con.readCharacter();
con.clearScreen();
con.flush();

System.out.println("Here is a prompt. Do something and press enter to continue...");
String line = con.readLine();
con.clearScreen();
con.flush();

System.out.println("You typed: ");
System.out.println(line);
System.out.println("Press any key to exit. ");
con.readCharacter();
con.clearScreen();
con.flush();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33710787

复制
相关文章

相似问题

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