import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.Event; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ScrollPane; import javafx.scene.input.ScrollEvent; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; /** * * @author Stanislav Smirnov */ public class ScrollbarsTest extends Application { boolean scrollDown = true; public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) throws Exception { Scene scene = new Scene(new Group(), 200, 200); Group root = (Group)scene.getRoot(); final Rectangle rectangle = new Rectangle(300, 300); rectangle.setFill(Color.WHITE); final ScrollPane sp = new ScrollPane(); sp.setContent(rectangle); sp.setPrefSize(150, 150); sp.setLayoutX(20); sp.setLayoutY(40); Button button = new Button("Scroll"); button.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { if (sp.getHvalue() > 0.8 && scrollDown == true) { scrollDown = false; } else if (sp.getHvalue() < 0.3) { scrollDown = true; } if (scrollDown) { Event.fireEvent(rectangle, new ScrollEvent(ScrollEvent.SCROLL, 50, 50, 50, 50, false, false, false, false, true, false, -50.0, -50.0, -50.0, -50.0, ScrollEvent.HorizontalTextScrollUnits.NONE, 10.0, ScrollEvent.VerticalTextScrollUnits.NONE, 10.0, 0)); } else { Event.fireEvent(rectangle, new ScrollEvent(ScrollEvent.SCROLL, 50, 50, 50, 50, false, false, false, false, true, false, 50.0, 50.0, 50.0, 50.0, ScrollEvent.HorizontalTextScrollUnits.NONE, 10.0, ScrollEvent.VerticalTextScrollUnits.NONE, 10.0, 0)); } } }); root.getChildren().addAll(sp, button); stage.setScene(scene); stage.show(); } }