JavaFX - ScrollPane -Dcom.sun.javafx.touch=true

VM arguments : -Dcom.sun.javafx.touch=true

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollBar;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {

  public static void main(String[] args) {
    launch();
  }

  @Override
  public void start(Stage stage) {

    // Element racine
    var root = new VBox();

    // Enfants de l'élément racine
    ObservableList < Node > children = root.getChildren();

    for (int i = 0; i < 100; i++) {
      // Affiche cent libellé avec le nombre
      children.add(new Label(String.valueOf(i)));
    }

    // Barre de défilement
    var scrollPane = new ScrollPane(root);

    // Quand la fenêtre est affichée
    stage.setOnShown(event -> {
      // Récupère la barre de défilement verticale
      var vertical = (ScrollBar) scrollPane.lookup(".scroll-bar:vertical");
      vertical.visibleProperty().addListener((obs, old, val) -> System.out
        .println("La barre de défilement est " + (val ? "visible" : "invisible")));
    });

    var scene = new Scene(scrollPane, 640, 480);
    stage.setScene(scene);
    stage.show();
  }

}

Commentaires