I want to use mouse scroll
to make circle bigger (mouse-scroll-up
) and circle smaller (mouse-scroll-down
).
I have existing code to change circle radius smaller already with mouse middle button, but my question would be:
How can I use mouse-scroll-up and mouse-scroll-down to do the same thing?
I have googled, it could be done somehow with ScrollEvent
, but I can't understand this very well.
This event occurs when mouse moves with a pressed button. It is delivered to the same node where the button has been pressed which activated a press-drag-release gesture. It is delivered regardless of the mouse being within bounds of the node.
The ScrollPane allows the application to set the current, minimum, and maximum values for positioning the contents in the horizontal and vertical directions. These values are mapped proportionally onto the layoutBounds of the contained node.
Also known as a "wheel mouse," when the wheel is moved back and forth, the active window is scrolled, eliminating the need to aim the pointer (cursor) at the scroll bar. Introduced in 1996, the scroll mouse is very useful for viewing long documents and Web pages, which have a vertical (portrait) orientation.
Answering to your question
How can I use mouse-scroll-up and mouse-scroll-down to do the same thing?
ScrollListener
on the circle and use the ScrollEvent reference to get the DeltaY
. zoomfactor
to calculate the zoom factor you want to have.Complete Example
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.input.ScrollEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class ZoomInOutCircles extends Application {
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 350, 300);
primaryStage.setTitle("Dots");
primaryStage.setScene(scene);
Circle circle = new Circle(175, 150, 10, Color.BLUE);
addMouseScrolling(circle);
root.getChildren().add(circle);
primaryStage.show();
}
public void addMouseScrolling(Node node) {
node.setOnScroll((ScrollEvent event) -> {
// Adjust the zoom factor as per your requirement
double zoomFactor = 1.05;
double deltaY = event.getDeltaY();
if (deltaY < 0){
zoomFactor = 2.0 - zoomFactor;
}
node.setScaleX(node.getScaleX() * zoomFactor);
node.setScaleY(node.getScaleY() * zoomFactor);
});
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With