在RichTextFX中直接突出显示一个文本范围

时间:2018-11-26 11:53:18

标签: java javafx richtextfx

我目前正在尝试在RichTextFX中显示文件的内容,然后在红色背景的行上突出显示特定字符​​范围,这确实表明该行有问题。

我的代码整齐地显示了所有内容,但不幸的是我没有突出显示。

代码:

    InlineCssTextArea textArea = new InlineCssTextArea();

    textArea.setParagraphGraphicFactory(LineNumberFactory.get(textArea));
    textArea.setMinHeight(200.0);

    textArea.getStylesheets().add(getClass().getResource("parser.css").toExternalForm());
    try {
        List<String> yourFileLines = Files.readAllLines(file.toPath());
        textArea.replaceText(yourFileLines.stream().collect(Collectors.joining("\n")));
    } catch (IOException e) {
        e.printStackTrace();
    }
    textArea.setStyle(0, 0, 10, "error");
    textArea.setEditable(false);

parser.css:

.error {
    -rtfx-background-color: red;
}

1 个答案:

答案 0 :(得分:1)

根据documentationInlineCssTextArea#setStyle直接采用参数中的css属性。

因此,在您的情况下为textArea.setStyle(0, 0, 10, "-rtfx-background-color: red;");


注意,如果您希望许多具有相同样式的组件,则样式类名称更简洁,并且是最好的方法(实际上,在我看来,这几乎总是最好的方法)。通过阅读this,如果要使用类名,应选择StyleClassedTextArea而不是InlineCssTextArea。实际上,StyleClassedTextArea接受StyleClass作为其方法setStyle的参数。 (请参见示例below)。