JavaFX Content Rendering & Resizing and Font Bugs In Linux

Ty Young youngty1997 at gmail.com
Thu Jan 3 00:27:45 UTC 2019


(I'm too lazy to make different emails for every bug so I've just thrown 
them in a single email. Hopefully that isn't a big deal.)


In my attempt to write a more proper responsive JavaFX UI, I've created 
a new JavaFX project which extensively uses DoubleBindings to force the 
min/max width/height of various components to their parent containing 
objects(HBox and VBox mainly) so that 1440p and 4k displays could be 
more easily supported. While it does allow for easier 1440p and 4k 
scaling, JavaFX itself seems to have /extremely/ horrible content 
rendering & resizing bugs to the point where the application becomes 
usable.


For clarity, the applications uses buttons in a VBox which when clicked 
set a ScrollPane on the right side to whatever pane the button 
represents("About" for example) like a TabPane. This is so it can be 
scaled more easily to different resolutions.


Multiple of the bugs can be observed by simply resizing the JavaFX 
window. When doing so, content will seemingly struggle to keep up with 
resizing events. As a result, white(or sometimes black) glitching can be 
seen wherever the window is being expanded and UI components will "jump" 
around. TableView's horizontal and vertical scrollbars will glitch out 
and show while the window is being resized even though it has plenty of 
room to display the contents. They sometimes even get stuck, requiring 
the user to resize the window for them to go away.


If the window is resized or if the window is maximized and later 
unmaximized , any non visible content will not be resized and will 
require that the window be resized by the user. A horizontal scroll bar 
will be displayed and usable to scroll to the content that hasn't been 
adjusted to the new window size. Sometimes JavaFX will slowly resize the 
content in seemingly steps however it doesn't always do this.


Thinking that this might be problems caused by extensive use of 
DoubleBinding, I launched SceneBuilder 10 which uses Oracle JDK 10. It 
has all of the same UI glitching that I've encountered in my JavaFX 
application at a lesser scale besides TableView since it doesn't use 
TableView.


The degree of how badly the bugs happen seemingly depend on:

     A. The app launch

     B. The time the application is open

     C. The max stretched width/height of the window


In other words, it's possible to experience little UI glitching one app 
launch while using it after awhile but then relaunch it later with no 
code changed and get far more glitching.


Another problem is a font bug revolving around making text bold. When 
attempting to make a label bold, the boldness is seemingly not being 
applied to some Label text. It might work on a few Labels in a certain 
part of the UI but completely refuse in other parts. Making things 
weirder is the disappearing boldness of Labels after setting a new Pane 
in the ScrollPane and switching back to a that specific pane.


For example: on first click to the pane two labels will be bold as set 
in code. Switching to another pane and back results in the last bold 
label not being bold anymore. Switching to another pane again results in 
the first Label no longer being bold.


All of these bugs make the application unusable(except the boldness 
bug). Is this all known? Are there any workarounds?


P.S. To whoever is developing SceneBuilder, please add a minimum 
width/height to the stage. A user shouldn't be able to make resize the 
window to 1x5 or whatever the smallest window size is allowed by the OS.



More information about the openjfx-dev mailing list