+1 I also vote for performance related optimizations


From: Gerrit Grunwald
Sent: 22.12.15, 07:55
To: Tom Schindl
Cc: OpenJFX
Subject: Re: Constant resetting to initial-state when adding/remove styleclasses
Hi,

I just can confirm what Tom wrote, figured that out some time ago when playing 
around with JavaFX on embedded. The focus on improving JavaFX should be on 
Performance and esp. CSS performance. You can make JavaFX fast but then you 
find yourself back in workarounds like in former Swing days.
Just my 0.02€...

Cheers,

Gerrit Grunwald

Westfalenstrasse 93
48165 Münster
- Germany -

twitter  @hansolo_
web     harmonic-code.org
mob    +49 (0)171 1745350

> tom.schi...@bestsolution.at>:
>
> Hi,
>
> While debugging some code I attached a listener to a property and
> noticed that whenever a style-class is added to the control or even
> worse somewhere in the parent hierarchy that FX resets the value to its
> initial state (Node#reapplyCss & CssStyleHelper) only to set it back to
> it's real value with the next CSS-Pass triggered by the next pulse.
>
> I don't want to imagine if this happens with many value set via CSS and
> eg adding/remove a styleclass to the scene root. Is this behavior really
> by design like this?
>
> You can try that yourself with the attached program below and using the
> css at the end. I'm writing this because of Kevins request what the team
> should invest time to because of Java9 delays and frankly all of those
> bugs/features sound relevant and interesting but JavaFX performance
> (most important CSS-Performance) is still miles away from eg browsers
> who are the main competitors.
>
> It doesn't help me to get an java.awt.Desktop replacement if my
> input-forms do not render in a decent time frame - I would even say
> rendering them in 2015 most be almost instant.
>
> Tom
>
>> package application;
>>
>> import javafx.application.Application;
>> import javafx.stage.Stage;
>> import javafx.scene.Scene;
>> import javafx.scene.control.Button;
>> import javafx.scene.layout.BorderPane;
>> import javafx.scene.layout.HBox;
>> import javafx.scene.layout.StackPane;
>>
>>
>> public class Main extends Application {
>>    @Override
>>    public void start(Stage primaryStage) {
>>        try {
>>            BorderPane root = new BorderPane();
>>
>>            StackPane p = new StackPane();
>>            p.getStyleClass().add("test-css");
>>            p.maxWidthProperty().addListener( (o, ol, ne) -> {
>>                System.err.println("Modified : " + ol + " " + ne);
>>                Thread.dumpStack();
>>            });
>>
>>            root.setCenter(p);
>>
>>            HBox box = new HBox();
>>
>>            {
>>                Button b = new Button("Modify Pane CSS");
>>                b.setOnAction( e -> p.getStyleClass().add("dummy"));
>>                box.getChildren().add(b);
>>            }
>>
>>            {
>>                Button b = new Button("Modify Root CSS");
>>                b.setOnAction( e -> {
>>                    root.getStyleClass().add("dummy");
>>                });
>>                box.getChildren().add(b);
>>            }
>>
>>            root.setBottom(box);
>>
>>            Scene scene = new Scene(root,400,400);
>>            
>> scene.getStylesheets().addAll(getClass().getResource("application.css").toExternalForm());
>>            primaryStage.setScene(scene);
>>            primaryStage.show();
>>        } catch(Exception e) {
>>            e.printStackTrace();
>>        }
>>    }
>>
>>    public static void main(String[] args) {
>>        launch(args);
>>    }
>> }
>
>
>> .test-css {
>>    -fx-max-width: 300;
>> }
>
>
>
> --
> Thomas Schindl, CTO
> BestSolution.at EDV Systemhaus GmbH
> Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
> http://www.bestsolution.at/
> Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck

Reply via email to