我希望能够让用户突出显示文本,然后更改突出显示的文本的字体或大小或颜色或格式(粗体,下划线,斜体)。
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();
以获得突出显示的测试。但是,它返回一个String。理想情况下,我想做这样的事情:
newArea.getSelectedText()setfont程序(字体);
但这不起作用,因为所选文本是String,而不是CssInlineTextArea。我如何将所选文本设置为我想要的字体/大小/颜色/格式?我觉得我需要CSS,但我不知道如何将其应用于突出显示的文本,也不知道在哪里写css。
答案 0 :(得分:2)
假设您在讨论RichTextFX中的InlineCssTextArea
,请使用getSelection()
和setStyle(from, to, style)
的组合:
IndexRange selection = newArea.getSelection();
newArea.setStyle(selection.getStart(), selection.getEnd(), "-fx-font-family: Helvetica");
如果您不想使用CSS,而是直接使用Java API来设置属性,则必须直接使用StyledTextArea
而不是其子类InlineCssTextArea
。
答案 1 :(得分:1)
如果您想自己动手,请查看TextFlow:
它可用于在单个文本流中布局多个Text节点。 TextFlow使用文本和文本内部每个Text节点的字体以及它自己的宽度和文本对齐来确定每个子项的位置。
此外,您可以不同地为每个Text
Node
设置样式。
如果您想使用现有的API来执行您提及的大多数功能,我建议您仔细查看RichTextFX。