ホイールマウスのスクロールをリッスンするペインがあります。同様に、ホイールマウスのスクロールを自動的にリッスンするスクロールバーもあります。ペインによってキャプチャされたスクロールイベントをスクロールバーに送信する方法を知りたいです。
スクロール ペインのカスタム実装が必要なため、スクロール ペインを使用できません。すでにスクロール ペインを使用しようとしましたが、ニーズが満たされませんでした。
イベントと他のメソッドを起動しようとしましたが、イベントをスクロールバーに渡したり、伝播したり、送信したりできます。
前もって感謝します
サンプル アプリケーション:
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);
}
}