-
Enhancement
-
Resolution: Duplicate
-
P3
-
8u5
-
N/A
For printing there is a need to get the sizes of a Node so it can be laid out properly on the page. For instance if you are going to print one label after another or below some dynamic content.
Since a Node that is to be printed isn't attached to a Scene this is impossible today, it only returns 0. There is a workaround to temporarily attach it to a Scene and .applyCSS() but that's not a good solution because:
1) It can't be done in a background thread since it needs to be on the UI thread
2) It won't work with normal layouts since they don't know this trick and just call .prefHeight/Width
3) It is slow
To be able to do decent printing, like printing reports, we need to be able to ask the Nodes for their different types of sizes. And this needs to work out of the box since the nice thing about having Node as the printing mechanism is that we can use the normal Pane-type layout and all support that gives. One could for instance do page templates in FXML and even use ScenBuilder to create them.
If it is hard to do this in a completely transparent way for some architectural reason maybe one can attach it to something like PageLayoutScene or something before doing the layout.
Since a Node that is to be printed isn't attached to a Scene this is impossible today, it only returns 0. There is a workaround to temporarily attach it to a Scene and .applyCSS() but that's not a good solution because:
1) It can't be done in a background thread since it needs to be on the UI thread
2) It won't work with normal layouts since they don't know this trick and just call .prefHeight/Width
3) It is slow
To be able to do decent printing, like printing reports, we need to be able to ask the Nodes for their different types of sizes. And this needs to work out of the box since the nice thing about having Node as the printing mechanism is that we can use the normal Pane-type layout and all support that gives. One could for instance do page templates in FXML and even use ScenBuilder to create them.
If it is hard to do this in a completely transparent way for some architectural reason maybe one can attach it to something like PageLayoutScene or something before doing the layout.
- duplicates
-
JDK-8091375 support API to measure a resizable node's size before it's added to a Scene
- Open