2015-04-19 3 views
3

Я хочу использовать mouse scroll, чтобы сделать круг больше (mouse-scroll-up) и круг меньше (mouse-scroll-down).Прокрутка мыши в Java FX

Я существующий код, чтобы изменить радиус окружности меньше уже с помощью средней кнопки мыши, но мой вопрос будет:

Как я могу использовать мышь прокрутки вверх и мышь прокрутки вниз, чтобы сделать то же самое вещь?

У меня есть googled, это может быть сделано как-то с ScrollEvent, но я не могу понять это очень хорошо.

+0

Вы знакомы с событиями и обработчиков событий? – VGR

ответ

5

Отвечая на ваш вопрос

Как я могу использовать мышь прокрутки вверх и мыши прокрутки вниз, чтобы сделать то же самое?

  • Используйте ScrollListener на окружности и использовать ScrollEvent ссылку, чтобы получить DeltaY.
  • Создайте zoomfactor, чтобы рассчитать коэффициент масштабирования, который вы хотите иметь.
  • Примените этот коэффициент к свойству Scale вашего узла.

Полный пример

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); 
     }); 
    } 
} 
Смежные вопросы