编辑:这个功能只在我调用ConsoleReader的clearScreen方法时发生!任何其他的改变都没有效果。这是JLine2中的一个bug吗?
JLine2:
为什么,当我运行这个命令时,我会得到两个控制台提示直接跟踪对方(----> ---->)?是因为正在创建两个控制台吗?我不明白怎么回事。
我在这里看不到什么?
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();
}
}发布于 2015-12-25 13:25:33
这不是一个bug,您只需要在每次调用con.flush()之后调用con.clearScreen()。
clearScreen方法不会自动调用flush() (在某些情况下它可能在不刷新的情况下工作),但是readLine方法会调用,因此只有在调用con.readLine()时屏幕才会清除。这导致最后一个System.out.println (在readLine之前)被清除,即使它是在con.clearScreen()之后调用的。
应该将try块中的代码更改为:
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();https://stackoverflow.com/questions/33710787
复制相似问题