0

我目前正在尝试在 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);

解析器.css:

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

1 回答 1

1

根据文档InlineCssTextArea#setStyle直接获取参数中的 css 属性。

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


请注意,如果您想要许多具有相同样式的组件,样式类名称更清晰,并且是最好的方法(实际上在我看来它几乎总是最好的方法)。通过阅读本文,如果你想使用类名,你应该选择.StyleClassedTextArea而不是InlineCssTextArea. 确实StyleClassedTextArea接受 StyleClass 作为其方法的参数setStyle。(见下面的例子)。

于 2018-11-27T09:05:26.277 回答