Using Java FX
Is it possible to place the vertical scroll bar of scrollPane
on the left?
Using Java FX
Is it possible to place the vertical scroll bar of scrollPane
on the left?
One possible solution is:
ScrollBar
bind
the ScrollBar
with the ScrollPane
ScrollPane
Here is a small functional example:
import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
public class ScrollbarIzquierda extends Application {
@Override
public void start(Stage stage) {
Pane pane = new Pane();
Line line = new Line(100, 100, 1000, 1000);
pane.getChildren().add(line);
ScrollPane scrollPane = new ScrollPane();
scrollPane.setContent(pane);
ScrollBar vScrollBar = new ScrollBar();
vScrollBar.setOrientation(Orientation.VERTICAL);
vScrollBar.minProperty().bind(scrollPane.vminProperty());
vScrollBar.maxProperty().bind(scrollPane.vmaxProperty());
vScrollBar.visibleAmountProperty().bind(scrollPane.heightProperty().divide(pane.heightProperty()));
scrollPane.vvalueProperty().bindBidirectional(vScrollBar.valueProperty());
ScrollBar hScrollBar = new ScrollBar();
hScrollBar.setOrientation(Orientation.HORIZONTAL);
hScrollBar.minProperty().bind(scrollPane.hminProperty());
hScrollBar.maxProperty().bind(scrollPane.hmaxProperty());
hScrollBar.visibleAmountProperty().bind(scrollPane.widthProperty().divide(pane.heightProperty()));
scrollPane.hvalueProperty().bindBidirectional(hScrollBar.valueProperty());
scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);
HBox hBox = new HBox();
HBox.setHgrow(scrollPane, Priority.ALWAYS);
hBox.getChildren().addAll(vScrollBar, scrollPane);
VBox vBox = new VBox();
VBox.setVgrow(hBox, Priority.ALWAYS);
vBox.getChildren().addAll(hScrollBar, hBox);
Scene scene = new Scene(vBox, 500, 400);
scene.getStylesheets().add(this.getClass().getResource("style.css").toExternalForm());
stage.setScene(scene);
stage.show();
vScrollBar.requestLayout();
hScrollBar.requestLayout();
}
public static void main(String[] args) {
launch(args);
}
}
And the CSS:
.scroll-pane {
-fx-background-insets: 0;
-fx-padding: 0;
}
.scroll-pane:focused {
-fx-background-insets: 0;
}
.scroll-pane .corner {
-fx-background-insets: 0;
}
Unfortunately not, in a Scroll Pane
, you can only manipulate properties of the Horizontal bars whose position is below and Vertical position right, which are the only ones implemented for this control.