更改InlineCSSTextArea javafX中突出显示文本的字体/大小/颜色/格式

时间:2014-11-11 06:24:35

标签: java css javafx

我希望能够让用户突出显示文本,然后更改突出显示的文本的字体或大小或颜色或格式(粗体,下划线,斜体)。

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。

2 个答案:

答案 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