3


編集:この機能は、 !のclearScreenメソッドを呼び出したときにのみ発生します。ConsoleReaderその他の変更は効果がありません。これは JLine2 のバグですか?


JLine2:

これを実行すると、2 つのコンソール プロンプトが連続して表示されるのはなぜですか ( ----> ---->)? 2 つのコンソールが作成されているためでしょうか。方法がわかりません。
ここで何が見えないのですか?

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();
    }   
}
4

1 に答える 1

0

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();
于 2015-12-25T13:25:33.643 に答える