'How to set vBarPolicy in ScrollPane ? JavaFX
I'm trying to set vertical scroll bar to be always visible. But i want to do it, using only fxml. Currently I;m trying to do this, like this:
<ScrollPane fitToHeight = "true" fitToWidth = "true">
<vbarPolicy>
<ScrollBarPolicy fx:constant = "ALWAYS" />
</vbarPolicy>
<LogView fx:id = "logViewLog" />
</ScrollPane>
But I got this error:
Caused by: javafx.fxml.LoadException: ScrollBarPolicy is not a valid type.
Solution 1:[1]
Recommended Solution
Set the vbarPolicy property directly to a string value of the ScrollBarPolicy enumerated type: vbarPolicy="ALWAYS".
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Label?>
<ScrollPane fitToHeight = "true" fitToWidth = "true" vbarPolicy="ALWAYS">
<Label text="The quick brown fox jumped over the lazy dog" minHeight="100" wrapText="true" alignment="TOP_LEFT"/>
</ScrollPane>
This will work for any enumerated type property.
See for instance in the example how alignment="TOP_LEFT", similarly sets the value of the Pos enumerated type alignment property for the Label.
Alternate Solution
As Slaw noted in comments you can also do this in a verbose fashion using the fx:constant syntax:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane.ScrollBarPolicy?>
<ScrollPane fitToHeight = "true" fitToWidth = "true" xmlns:fx="http://javafx.com/fxml">
<vbarPolicy>
<ScrollPane.ScrollBarPolicy fx:constant = "ALWAYS" />
</vbarPolicy>
<Label text="The quick brown fox jumped over the lazy dog" minHeight="100" wrapText="true" alignment="TOP_LEFT"/>
</ScrollPane>
If you do this, ensure that you:
Define the
fxnamespace:xmlns:fx="http://javafx.com/fxml"Import the
ScrollBarPolicytype:<?import javafx.scene.control.ScrollPane.ScrollBarPolicy?>
My preference would be to use the direct string conversion previously outlined rather than the fx:constant version.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
