2016-08-17 4 views
0

私はアプリケーションのコンソールとして使用したテキスト領域にテキストのロードを印刷するプログラムを持っています。javaFx java8のtextArea自動スクロールを無効にする方法

ライブの建物情報を出力します。デフォルトでは

それはいいです一番下までスクロールし、私は、スクロールバーをつかむと、テキストがまだテキストエリアに追加されている間に何が起こっているかをチェックするためにテキスト領域にまで行くことができるようにしたいと思います。

私の質問は、スクロールバーをつかむときに自動スクロールを無効にする方法です。

理想的なシナリオは次のようになります。 自動スクロールスクロールバーが途中バックエンドにある場合 無効に自動スクロールテキストは最後に戻ってジャンプしながら、私は何を読むためにその困難として、スクロールバーを取り上げたときすべての時間。

これは、私は同じ問題を抱えていた、これはそれを解決し

private void run(final TextArea console) { 
    try { 
     console.clear(); 
     BufferedReader stdInput; 
     stdInput = new BufferedReader(new InputStreamReader(process.getInputStream())); 

     String line; 
     while ((line = stdInput.readLine()) != null) { 
      String feed = line; 
      Platform.runLater(() -> console.appendText(feed + "\n")); 
     } 
    } catch (Exception e) { 
     console.appendText(e.toString()); 
    } 
} 

答えて

1

アペンダ私のテキスト領域です。基本的にはテキストの更新前/後にスクロール位置を取って作ってくださいそれは同じだ:

Platform.runLater(() -> { 
    double pos = console.getScrollTop(); 
    int anchor = console.getAnchor(); 
    int caret = console.getCaretPosition(); 
    console.appendText(feed + '\n'); 
    console.setScrollTop(pos); 
    console.selectRange(anchor, caret); 
}); 

注:追加の選択:これはないのappendText()

EDITではなく、.setText()でテストされてコード - それがなければ、それは未定義の振る舞いを持っています

+0

あなたの答えをありがとう、私は似たようなことをしましたが、それをするのが間違っていた、私はかなり多くのコンソールで起こっているこのソリューションは、私は、アンカーをクリックしたときに自動スクロールを無効にして後で元の状態に戻すことができると思ったが、これを見つけるのは難しい – LazerBanana

関連する問題