JavaFX ScrollPane
Jakob Jenkov |
The JavaFX ScrollPane control is a container that has two scrollbars around the component
it contains if the component is larger than the visible area of the ScrollPane. The scrollbars enable the user
to scroll around the component shown inside the ScrollPane, so different parts of the component can be seen.
The JavaFX ScrollPane controls is represented by the JavaFX class javafx.scene.control.ScrollPane
.
Here is a screenshot of a JavaFX ScrollPane
with a JavaFX ImageView
inside:
Create a ScrollPane
To use a JavaFX ScrollPane
you must first create a ScrollPane
instance.
Here is an example of creating a JavaFX ScrollPane
instance:
ScrollPane scrollPane = new ScrollPane();
Set ScrollPane Content
Once you have created a JavaFX ScrollPane
instance you can set the content you want it to
display via its setContent()
method. Here is an example that sets a JavaFX ImageView
as content of a JavaFX ScrollPane
:
ScrollPane scrollPane = new ScrollPane(); String imagePath = "images/aerial-beverage-caffeine-972533.jpg"; ImageView imageView = new ImageView(new Image(new FileInputStream(imagePath))); scrollPane.setContent(imageView);
ScrollPane Viewport
The visible part of a JavaFX ScrollPane
is called the ScrollPane viewport.
As you scroll around the content displayed inside the ScrollPane
using the scrollbars, the
viewport is moved around the content too, making different parts of the content visible.
Content With Effects or Transforms
If the content (JavaFX control) you want to display inside the JavaFX ScrollPane
uses effects
or transforms, you must first wrap these controls in a JavaFX Group. Otherwise the
content won't be displayed correctly.
Pannable ScrollPane
By default the user can only navigate around the content displayed in a JavaFX ScrollPane
using
its scrollbars. However, it is possible to make a JavaFX ScrollPane
pannable.
A pannable ScrollPane
enables the user to navigate its content by holding down the left mouse button
and move the mouse around. This will have the same effect as using the scrollbars. However, using panning you
can move the content along both X and Y axis simultaneously. This is not possible using the scrollbars, where
the user can only operate one scrollbar at a time.
To switch a JavaFX ScrollPane
into pannable mode you must set its pannableProperty
to the value true
. Here is an example of switching a JavaFX ScrollPane
into
pannable mode:
scrollPane.pannableProperty().set(true);
Fit To Width
The JavaFX ScrollPane
fitToWidth
property can make the ScrollPane
fit
its content to the width of the ScrollPane
viewport. To do so, the fitToWidth
property must be set to the value true
. This property is ignored if the content node is not
resizable. Here is an example of setting the JavaFX ScrollPane
fitToWidth
property
to true
:
scrollPane.fitToWidthProperty().set(true);
Fit To Height
The JavaFX ScrollPane
fitToHeight
property can make the ScrollPane
fit
its content to the height of the ScrollPane
viewport. To do so, the fitToHeight
property must be set to the value true
. This property is ignored if the content node is not
resizable. Here is an example of setting the JavaFX ScrollPane
fitToHeight
property
to true
:
scrollPane.fitToHeightProperty().set(true);
Showing and Hiding Scrollbars via ScrollBar Policies
It is possible to specify when the JavaFX ScrollPane
is to show the vertical and horizontal scrollbars.
You do so via the ScrollPane
hbarPolicyProperty
and vbarPolicyProperty
properties. These properties can be set to one of the ScrollPane.ScrollBarPolicy
enum values.
You can choose from the values ALWAYS
, AS_NEEDED
and NEVER
. Here is an
example of setting the hbarPolicyProperty
and vbarPolicyProperty
to
ScrollBarPolicy.NEVER
:
scrollPane.hbarPolicyProperty().setValue(ScrollPane.ScrollBarPolicy.NEVER); scrollPane.vbarPolicyProperty().setValue(ScrollPane.ScrollBarPolicy.NEVER);
The above example removes the vertical and horizonal scrollbar from the ScrollPane
. Without the
scrollbars the user cannot use them to scroll around the content of the ScrollPane
. However,
if the ScrollPane
is in pannable mode (see earlier sections in this JavaFX ScrollPane tutorial)
the user can still grab the content and scroll around it with the mouse.
Tweet | |
Jakob Jenkov |