From fbb84fe16b0b3b35267a01e97384598a1cef62b3 Mon Sep 17 00:00:00 2001 From: Gary Gan Date: Mon, 24 Nov 2025 13:49:03 +0800 Subject: [PATCH] fix bug: DrawingCanvas.prefWidth : A bound value cannot be set. --- .idea/misc.xml | 2 +- .../dev/bytevibe/hyperpoint/Controller.java | 8 +++++--- .../dev/bytevibe/hyperpoint/DrawingCanvas.java | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 4878ef2..58ead8c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/src/main/java/dev/bytevibe/hyperpoint/Controller.java b/src/main/java/dev/bytevibe/hyperpoint/Controller.java index 47c9a69..e650f6a 100644 --- a/src/main/java/dev/bytevibe/hyperpoint/Controller.java +++ b/src/main/java/dev/bytevibe/hyperpoint/Controller.java @@ -133,9 +133,11 @@ public class Controller implements Initializable { drawingCanvas = new DrawingCanvas(pageContent); drawingCanvasContainer.getChildren().add(drawingCanvas); - // 绑定Canvas大小到容器 - drawingCanvas.prefWidthProperty().bind(drawingCanvasContainer.widthProperty()); - drawingCanvas.prefHeightProperty().bind(drawingCanvasContainer.heightProperty()); + // 使用AnchorPane的约束来填充容器 + AnchorPane.setTopAnchor(drawingCanvas, 0.0); + AnchorPane.setLeftAnchor(drawingCanvas, 0.0); + AnchorPane.setRightAnchor(drawingCanvas, 0.0); + AnchorPane.setBottomAnchor(drawingCanvas, 0.0); // 创建属性面板 propertyPanelComponent = new PropertyPanel(drawingCanvas); diff --git a/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java b/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java index ac1fae1..27382a6 100644 --- a/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java +++ b/src/main/java/dev/bytevibe/hyperpoint/DrawingCanvas.java @@ -1,10 +1,8 @@ package dev.bytevibe.hyperpoint; -import javafx.geometry.Bounds; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; -import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; @@ -24,7 +22,7 @@ public class DrawingCanvas extends Pane { public DrawingCanvas(PageContent pageContent) { this.pageContent = pageContent; - this.canvas = new Canvas(755, 485); + this.canvas = new Canvas(); getChildren().add(canvas); @@ -33,9 +31,18 @@ public class DrawingCanvas extends Pane { setOnMouseDragged(this::handleMouseDragged); setOnMouseReleased(this::handleMouseReleased); - setPrefSize(755, 485); setStyle("-fx-border-color: #e0e0e0; -fx-border-width: 1;"); + // 绑定Canvas大小到Pane大小 + widthProperty().addListener((obs, oldVal, newVal) -> { + canvas.setWidth(newVal.doubleValue()); + redraw(); + }); + heightProperty().addListener((obs, oldVal, newVal) -> { + canvas.setHeight(newVal.doubleValue()); + redraw(); + }); + // 初始绘制 redraw(); } @@ -79,6 +86,8 @@ public class DrawingCanvas extends Pane { } } + + /** * 鼠标释放事件处理 */