CodeArea: -fx-background-color doesn't work.

PavelTurk pavelturk2000 at gmail.com
Wed May 7 17:30:41 UTC 2025


Andy, thank you very much for your help!

Best regards, Pavel

On 5/7/25 20:29, Andy Goryachev wrote:
>
> This bug is still percolating through the system.  I'll respond once I get it.
>
> Thank you for all the questions and the feedback!
>
> -andy
>
> *From: *openjfx-dev <openjfx-dev-retn at openjdk.org> on behalf of PavelTurk <pavelturk2000 at gmail.com>
> *Date: *Monday, May 5, 2025 at 14:13
> *To: *openjfx-dev at openjdk.org <openjfx-dev at openjdk.org>
> *Subject: *Re: CodeArea: -fx-background-color doesn't work.
>
> No, I am afraid you misunderstood me. I am not talking about compatibility with a third party library.
> The "compatibility" already exists and its name is CSS. So, the only thing I need is to support
> '-fx-background-color' for RichParagraph segment.
>
> I've opened an issue today, so, when it is approved there won't be any questions.
>
> Best regards, Pavel
>
> On 5/6/25 00:04, Andy Goryachev wrote:
>
>     Will not happen.  CSS compatibility with a third party library is not a requirement in this case.
>
>     -andy
>
>     *From: *openjfx-dev <openjfx-dev-retn at openjdk.org> <mailto:openjfx-dev-retn at openjdk.org> on behalf of PavelTurk <pavelturk2000 at gmail.com> <mailto:pavelturk2000 at gmail.com>
>     *Date: *Monday, May 5, 2025 at 13:59
>     *To: *openjfx-dev at openjdk.org <openjfx-dev at openjdk.org> <mailto:openjfx-dev at openjdk.org>
>     *Subject: *Re: CodeArea: -fx-background-color doesn't work.
>
>     To be as clear as possible, here's what I need:
>
>     .test {
>          -fx-set-somehow-background-color: green;
>     }
>
>     var builder = RichParagraph.builder();
>     builder.addWithStyleNames(segment, "test");
>
>     because, in parallel for RTFX I simply use its stylesheet:
>
>     .test {
>          -rtfx-background-color: green;
>     }
>
>
>     So, for both code areas, I use same style classes for styling paragraph segments.
>
>     Best regards, Pavel
>
>     On 5/5/25 23:20, Andy Goryachev wrote:
>
>         Right, the API are missing currently.  I just point out the fact that you must use highlights for the purpose of highlighting text range(s) within the paragraph, since these ranges might contain semi-transparent Nodes.  Once JDK-8355774 is fixed you'll be able to style highlights with CSS and all will be well.  Right?
>
>         -andy
>
>         *From: *openjfx-dev <openjfx-dev-retn at openjdk.org> <mailto:openjfx-dev-retn at openjdk.org> on behalf of PavelTurk <pavelturk2000 at gmail.com> <mailto:pavelturk2000 at gmail.com>
>         *Date: *Monday, May 5, 2025 at 13:10
>         *To: *openjfx-dev at openjdk.org <openjfx-dev at openjdk.org> <mailto:openjfx-dev at openjdk.org>
>         *Subject: *Re: CodeArea: -fx-background-color doesn't work.
>
>         Andy, thank you very much for your help.
>
>         That doesn’t work for me. As I mentioned before, I’m working with two CodeArea implementations - JFX and RTFX,
>         and CSS is the common styling mechanism. I can’t use code for one and CSS for the other.
>
>         Well, technically I could, but it just wouldn’t make any sense.
>
>         Best regards, Pavel
>
>         On 5/5/25 22:54, Andy Goryachev wrote:
>
>             You have to use highlights for that, since you can't assign CSS style to a part of the Text instance, and you can't set a background on it.
>
>             JDK-8355774 is pretty high on my list of things to do.
>
>             -andy
>
>             *From: *openjfx-dev <openjfx-dev-retn at openjdk.org> <mailto:openjfx-dev-retn at openjdk.org> on behalf of PavelTurk <pavelturk2000 at gmail.com> <mailto:pavelturk2000 at gmail.com>
>             *Date: *Monday, May 5, 2025 at 12:47
>             *To: *openjfx-dev at openjdk.org <openjfx-dev at openjdk.org> <mailto:openjfx-dev at openjdk.org>
>             *Subject: *Re: CodeArea: -fx-background-color doesn't work.
>
>             Hello, Andy
>
>             Yes, I need to add a background color for a text segment within a paragraph using CSS.
>
>             I have just opened an issue with ID : 9078469.
>
>             Can anyone give an estimate of when this issue might be addressed? Background color is such a fundamental feature
>             that it's impossible to work without it.
>
>             Best regards, Pavel
>
>             On 5/5/25 22:09, Andy Goryachev wrote:
>
>                 Dear Pavel:
>
>                 Can you clarify what you are trying to do exactly?
>
>                 If you are trying to add a background to a text segment within the paragraph (as your code seem to indicate), then the only way to do it is to call Builder.addHighlight().
>
>                 If you are trying to set the background of the whole paragraph, you've hit another missing API similar to JDK-8355774 - there is currently no way to style the paragraphs via CSS. There is the Builder.setParagraphAttributes(StyleAttributeMap) but a CSS one is missing.
>
>                 -andy
>
>                 *From: *openjfx-dev <openjfx-dev-retn at openjdk.org> <mailto:openjfx-dev-retn at openjdk.org> on behalf of PavelTurk <pavelturk2000 at gmail.com> <mailto:pavelturk2000 at gmail.com>
>                 *Date: *Saturday, May 3, 2025 at 10:07
>                 *To: *openjfx-dev at openjdk.org <openjfx-dev at openjdk.org> <mailto:openjfx-dev at openjdk.org>
>                 *Subject: *CodeArea: -fx-background-color doesn't work.
>
>                 For styling CodeArea, I use exclusively style classes, and this is the foundation of my entire architecture.
>                 Today I tried to implement search highlighting (via background color), but it didn't work. Below is my test code.
>
>                 Can anyone tell me how to set the background color using CSS? For example, in RichTextFX's CodeArea,
>                 they have -rtfx-background-color.
>
>                 public class JfxCodeArea extends Application {
>
>                      @Override
>                      public void start(Stage primaryStage) throws Exception {
>                          String text = """
>                                        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
>                                        ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
>                                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit
>                                        in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
>                                        """;
>
>                          String css = """
>                              .test {
>                                  -fx-font-weight: bold;
>                                  -fx-fill: red;
>                                  -fx-background-color: green;
>                              }
>
>                          """;
>                          String data = "data:text/css;base64," + Base64.getEncoder().encodeToString(css.getBytes(StandardCharsets.UTF_8));
>
>                          CodeArea codeArea = new CodeArea();
>                          codeArea.getStylesheets().add(data);
>
>                          codeArea.setSyntaxDecorator(new SyntaxDecorator() {
>                              @Override
>                              public RichParagraph createRichParagraph(CodeTextModel model, int index) {
>                                  var builder = RichParagraph.builder();
>                                  builder.addWithStyleNames(model.getPlainText(index), "test");
>                                  return builder.build();
>                              }
>
>                              @Override
>                              public void handleChange(CodeTextModel m, TextPos start, TextPos end, int charsTop, int linesAdded, int charsBottom) {
>
>                              }
>                          });
>
>                          VBox.setVgrow(codeArea, Priority.ALWAYS);
>                          var button = new Button("Go!");
>                          button.setOnAction(e -> codeArea.setText(text));
>                          VBox root = new VBox(codeArea, button);
>                          Scene scene = new Scene(root, 600, 200);
>                          primaryStage.setScene(scene);
>                          primaryStage.show();
>
>                      }
>
>                      public static void main(String[] args) {
>                          launch(args);
>                      }
>                 }
>
>                 Best regards, Pavel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20250507/329935ef/attachment-0001.htm>


More information about the openjfx-dev mailing list