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