Always displayed when scrolling Node bindings in Java FX 2.0?

I want to make the node present in the ScrollPane, tied to the vertex (fixed along the Y axis), but able to scroll along the X axis. (In Java-FX 2.0)

Is it possible?

0
source share
1 answer

You can use the snap to adjust this position of a special object based on the position of the scroll bar, see the following code:

public class FancyScrollPane extends Application { @Override public void start(Stage primaryStage) { ScrollPane scrollPane = new ScrollPane(); Pane content = new Pane(); scrollPane.setContent(content); // adding background content.getChildren().add(new Rectangle(500, 500, Color.GREEN)); Circle immovableObject = new Circle(30, Color.RED); content.getChildren().add(immovableObject); primaryStage.setScene(new Scene(scrollPane, 300, 300)); primaryStage.show(); // here we bind circle Y position immovableObject.layoutYProperty().bind( // to vertical scroll shift (which ranges from 0 to 1) scrollPane.vvalueProperty() // multiplied by (scrollableAreaHeight - visibleViewportHeight) .multiply( content.heightProperty() .subtract( new ScrollPaneViewPortHeightBinding(scrollPane)))); } // we need this class because Bounds object doesn't support binding private static class ScrollPaneViewPortHeightBinding extends DoubleBinding { private final ScrollPane root; public ScrollPaneViewPortHeightBinding(ScrollPane root) { this.root = root; super.bind(root.viewportBoundsProperty()); } @Override protected double computeValue() { return root.getViewportBounds().getHeight(); } } public static void main(String[] args) { launch(); } } 
+2
source

Source: https://habr.com/ru/post/953043/


All Articles