我希望用户能够高亮显示文本,然后更改突出显示文本的字体或大小、颜色或格式(粗体、下划线、斜体)。
boolean b = isBold();
boolean u = isUnderlined();
boolean i = isItalicized();
String colorHexValue = getColorValue();
String f = (String)getFont();
int size = getSize();
Font font = new Font(f, size);
InlineCSSTextArea newArea = new InlineCSSTextArea();我知道我能做到
newArea.getSelectedText();以便得到突出显示的测试。但是,这将返回一个字符串。理想情况下,我想做这样的事情:
NewArea.getSelectedText().setFont(字体);
但这不起作用,因为选定的文本是字符串,而不是CssInlineTextArea。如何将选定的文本设置为我想要的字体/大小/颜色/格式?我觉得我需要CSS,但我不知道如何将它应用于突出显示的文本,也不知道在哪里编写css。
发布于 2014-11-11 14:48:59
假设您是在谈论来自RichTextFX的RichTextFX,那么使用getSelection()和setStyle(from, to, style)的组合
IndexRange selection = newArea.getSelection();
newArea.setStyle(selection.getStart(), selection.getEnd(), "-fx-font-family: Helvetica");如果您不想使用CSS,而是直接使用Java来设置属性,则必须直接使用StyledTextArea而不是它的子类InlineCssTextArea。
发布于 2014-11-11 12:24:21
如果你想自己做这件事,看一看TextFlow
它可用于在单个文本流中布局多个文本节点。TextFlow使用其内部每个文本节点的文本和字体,再加上它自己的宽度和文本对齐方式来确定每个子节点的位置。
此外,您还可以对每个Text Node进行不同的样式设计。
如果您想使用一个现有的API来完成您提到的大部分功能,我建议您仔细看看RichTextFX。
https://stackoverflow.com/questions/26858853
复制相似问题