From 6b31c8051d8bdc2223f9eda94a3af12ac31333c3 Mon Sep 17 00:00:00 2001 From: liujing133 <2717526089@qq.com> Date: Fri, 5 Dec 2025 23:04:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=BC=A0=E6=A0=87=E6=BB=9A?= =?UTF-8?q?=E8=BD=AE=E6=8E=A7=E5=88=B6=E9=A1=B5=E9=9D=A2=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev/bytevibe/hyperpoint/Controller.java | 34 ++++++++++++++++--- .../hyperpoint/PresentationWindow.java | 20 ++++++++--- 2 files changed, 45 insertions(+), 9 deletions(-) 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(); + } + /** * 下一页 */