我在我的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(); –