1

後続の行のインデントを増やす

以前に印刷された行を取り除くことができないようです。私がちょうどするなら

AnsiConsole.out.println(ansi);

連続する出力ごとに同じ出力を繰り返します。例 A AB ABC

出力が想定されている場合でも

A B C

私のコードは次のとおりです。

AnsiConsole.out.println(a);
a.eraseLine(Erase.ALL);
AnsiConsole.out.flush;

a.eraseLine(Erase.ALL) を使用しない場合、次のようになります。

また、Jansi を使わずにそのままの System.out を使うと、このようになるので、他のコードの問題ではないことがわかります。

解決策: Betlista の回答に感謝します。何が悪いのかわかりました。問題は、私の ansi 変数が、Ansi.ansi() メソッドではなく、Ansi コンストラクターを使用して実際に呼び出されたことです。それが私のコードの違いでした。ありがとう。:)

4

1 に答える 1

1

あなたは何か間違ったことをしているようですが、あなたの投稿には多くの情報が欠けていて、フォローするのが難しいです...

...だから私はそれが私にとってどのように機能するかを書きます:

Windows 7でテストされたバージョン1.11のjansiでmavenを使用しています。

https://github.com/fusesource/jansiの情報と私のコードに従っただけです

package jansi;

import java.io.IOException;

import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.Ansi.Color;
import org.fusesource.jansi.AnsiConsole;

public class Main {

    public static void main(String[] args) throws IOException {
        AnsiConsole.systemInstall();

        String[] sa = {"A", "B", "C"};
        Color[] ca = {Color.RED, Color.GREEN, Color.BLUE};
        for (int i = 0; i < sa.length; ++i ) {
            System.out.println(Ansi.ansi().eraseLine().fg(ca[i]).a(sa[i]).reset());
        }
    }
}

はまさに私が期待したことを行っており、これが結果です:

ここに画像の説明を入力

于 2015-11-20T10:29:19.917 に答える