增加鼠标滚轮控制页面切换

This commit is contained in:
liujing133
2025-12-05 23:04:21 +08:00
parent f88dac9d2c
commit 6b31c8051d
2 changed files with 45 additions and 9 deletions
@@ -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<SlidePage> 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();
});
}
/**
@@ -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();
}
/**
* 下一页
*/