2017-03-27 1 views
0

JavaFXアプリケーションに表示テキストエリアがあります。JavaFXの表示テキスト領域が追加されています - 強調表示する/新しいテキストをより目立たせる方法はありますか?

文字列を追加する方法はいくつかあります。

私が欲しいのは、新しく追加されたテキストが何らかのフィードバックを持つため、ユーザーは表示されている新しいテキストをより視覚的に認識しているからです。

理想的には私が望むものを、次のいずれかであるが、他の提案に非常に開いています:

  • 誰かが表示テキストエリア自体にそれを入力したかのように追加されたテキストが「アウト型付け」されます。または..
  • 表示される新しいテキストの強調表示のいくつかの種類。

また、私は提案にオープンしていますが、

ありがとうございます。

+2

可能な複製http://stackoverflow.com/questions/9128535/highlighting-strings-in-javafx-textarea –

+0

テキストの 'chars'をループします。 'TextArea'に1つの' char'を挿入して、しばらくの間ポーズしてください...これはタイピングの効果をもたらします –

+0

ありがとう、これを行う標準的な方法は何ですか?私は明らかにthread.sleep()を使いたくない。 –

答えて

1

Highlighting Strings in JavaFX TextAreaで提案されているように、新しいテキストを選択することができます。

textArea.textProperty().addListener((obs, oldText, newText) -> { 
    if (newText.length() > oldText.length()) { 
     Platform.runLater(() -> 
      textArea.selectRange(oldText.length(), newText.length())); 
    } 
}); 

あなたのテキスト領域が編集可能である、またはあなたがより多くのそれを使用している場合:テキストエリアは編集できませんし、あなただけのこれまでの既存のテキストの末尾に追加され、あなたがすることができると仮定すると、

一般的には、テキストを追加するたびに似たようなことをすることができます。たとえば:

String message = ... ; 
textArea.positionCaret(textArea.getLength()); 
textArea.appendText(message); 
textArea.extendSelection(textArea.getLength()); 
+0

こんにちは、返信ありがとう - リスナーは理想的ですが、コントローラの初期設定に直接配置すると効果がないようです。テキスト表示領域が編集不可に設定されていることを確認できます。提案はありますか? –

+1

テキストの変更が行われた後、何かのようにキャレットがリセットされているように見えます。回避策は、選択呼び出しを 'Platform.runLater(...)'にラップすることです(ちょっとハックした感じです)。更新を参照してください。 –

+0

完璧!これは現在機能します。この場合、それはおもちゃのプロジェクトなので、ちょっとハッキリしていいですね:)これ、ありがとう、+1! –

関連する問題