J'ai un volet qui écoute le défilement de la molette de la molette; ainsi j'ai une barre de défilement qui écoute automatiquement pour le rouleau de souris de roue. Je voudrais savoir comment envoyer à l'événement de défilement capturé par le volet à la barre de défilement.Comment envoyer des événements d'un nœud à un autre nœud
Je ne peux pas utiliser un volet de défilement car j'ai besoin d'une implémentation personnalisée du volet, j'ai déjà essayé d'utiliser un volet de défilement et cela ne couvrait pas mes besoins.
J'ai essayé de déclencher l'événement et une autre méthode, mais je peux juste obtenir que l'événement soit passé/propagé/envoyé à la barre de défilement.
Merci à l'avance
exemple d'application:
package com.test;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class ScrollTest extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
final BorderPane root = new BorderPane();
final Pane pane = new Pane();
root.setCenter(pane);
final ScrollBar scrollBar = new ScrollBar();
root.setRight(scrollBar);
pane.addEventFilter(ScrollEvent.ANY, new EventHandler<ScrollEvent>(){
@Override
public void handle(ScrollEvent arg0) {
System.out.println("scrolling on the pane");
Event.fireEvent(scrollBar, arg0);
// scrollBar.getEventDispatcher().dispatchEvent(arg0, arg1)
}
});
scrollBar.setOrientation(Orientation.VERTICAL);
scrollBar.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number old_val, final Number new_val) {
System.out.println("scrollBar.valueProperty() changed");
}
});
primaryStage.setScene(new Scene(root, 600, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}