diff --git a/src/main/java/dev/bytevibe/hyperpoint/Controller.java b/src/main/java/dev/bytevibe/hyperpoint/Controller.java index 818c310..51cefa6 100644 --- a/src/main/java/dev/bytevibe/hyperpoint/Controller.java +++ b/src/main/java/dev/bytevibe/hyperpoint/Controller.java @@ -1,20 +1,25 @@ package dev.bytevibe.hyperpoint; +import java.io.File; +import java.net.URL; +import java.util.ResourceBundle; + import dev.bytevibe.hyperpoint.Utils.MyAlert; import dev.bytevibe.hyperpoint.Utils.MyTextInputDialog; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; -import javafx.scene.control.*; +import javafx.scene.control.Alert; +import javafx.scene.control.ButtonType; +import javafx.scene.control.Label; +import javafx.scene.control.ListView; +import javafx.scene.control.MenuItem; +import javafx.scene.control.TextInputDialog; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage; -import java.io.File; -import java.net.URL; -import java.util.ResourceBundle; - public class Controller implements Initializable { @FXML private ListView pageListView; @@ -51,6 +56,25 @@ public class Controller implements Initializable { displayPageContent(newVal); } }); + + // 为页面列表添加鼠标滚轮事件 + pageListView.setOnScroll(event -> { + if (currentSlide == null || currentSlide.getPages().isEmpty()) { + return; + } + + int currentIndex = pageListView.getSelectionModel().getSelectedIndex(); + if (event.getDeltaY() < 0) { + if (currentIndex < currentSlide.getPages().size() - 1) { + pageListView.getSelectionModel().select(currentIndex + 1); + } + } else { + if (currentIndex > 0) { + pageListView.getSelectionModel().select(currentIndex - 1); + } + } + event.consume(); + }); } /** diff --git a/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java b/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java index 88e0430..2652428 100644 --- a/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java +++ b/src/main/java/dev/bytevibe/hyperpoint/PresentationWindow.java @@ -1,19 +1,18 @@ package dev.bytevibe.hyperpoint; -import javafx.animation.*; -import javafx.geometry.Bounds; +import javafx.animation.Animation; +import javafx.animation.AnimationTimer; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; +import javafx.scene.input.ScrollEvent; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; -import javafx.scene.transform.Rotate; import javafx.stage.Stage; import javafx.stage.StageStyle; -import javafx.util.Duration; /** * 全屏演示窗口,支持翻页和动画效果 @@ -54,6 +53,7 @@ public class PresentationWindow { // 添加键盘和鼠标事件处理 root.setOnKeyPressed(this::handleKeyEvent); root.setOnMouseClicked(this::handleMouseClick); + root.setOnScroll(this::handleMouseScroll); root.getChildren().add(canvas); root.setStyle("-fx-background-color: #000000;"); @@ -100,6 +100,18 @@ public class PresentationWindow { } } + /** + * 处理鼠标滚轮事件 + */ + private void handleMouseScroll(ScrollEvent event) { + if (event.getDeltaY() < 0) { + nextPage(); + } else { + previousPage(); + } + event.consume(); + } + /** * 下一页 */