我在我的JavaFX應用程序中有一個顯示文本區域。JavaFX顯示文本區域追加 - 任何突出顯示/使新文本更明顯的方法?
它有幾種將字符串附加到它的方法。
我想要的是任何新近添加的文本都有某種反饋,以便用戶更直觀地瞭解正在顯示的新文本。
理想是什麼,我想是以下情況之一,但我接受其他的建議非常開放:
- 所附的文字是「打出來」,就好像有人在鍵入它到顯示文本區域本身。或..
- 某種突出顯示的新文本。
雖然我再次提出建議!
謝謝。
我在我的JavaFX應用程序中有一個顯示文本區域。JavaFX顯示文本區域追加 - 任何突出顯示/使新文本更明顯的方法?
它有幾種將字符串附加到它的方法。
我想要的是任何新近添加的文本都有某種反饋,以便用戶更直觀地瞭解正在顯示的新文本。
理想是什麼,我想是以下情況之一,但我接受其他的建議非常開放:
雖然我再次提出建議!
謝謝。
正如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());
嗨,感謝您的答覆 - 聽衆會是理想的,但是直接放入我在控制器中的初始化時,它似乎沒有任何影響。可以確認文本顯示區域設置爲不可編輯。你有什麼建議嗎? –
在文本更改完成後,它看起來像是隨後重置了插入符。所以一個解決方法是將選擇調用包裝在一個'Platform.runLater(...)'中(雖然感覺有點像黑客)。查看更新。 –
完美!這現在起作用。在這種情況下,因爲這是一個玩具項目,所以我認爲我可以做一點小事:)非常感謝你,+1! –
也許嘗試使用RichTextArea(https://github.com/TomasMikula/RichTextFX),然後是許多possibilites顯示以不同的方式文本。
可能的重複http://stackoverflow.com/questions/9128535/highlighting-strings-in-javafx-textarea –
循環遍歷文本的「字符」。在'TextArea'中插入一個'char',暫停一段時間,重複......這會給鍵入效果 –
謝謝,這樣做的標準方式是什麼?我顯然不想使用thread.sleep(); –