有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java直接突出显示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);

解析器。css:

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

共 (1) 个答案

  1. # 1 楼答案

    根据documentationInlineCssTextArea#setStyle直接获取参数中的css属性

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


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