fix bug: DrawingCanvas.prefWidth : A bound value cannot be set.

This commit is contained in:
2025-11-24 13:49:03 +08:00
parent 3b6e5e0916
commit fbb84fe16b
3 changed files with 19 additions and 8 deletions
+1 -1
View File
@@ -8,7 +8,7 @@
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_25" default="true" project-jdk-name="openjdk-25" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_24" default="true" project-jdk-name="openjdk-25" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>
@@ -133,9 +133,11 @@ public class Controller implements Initializable {
drawingCanvas = new DrawingCanvas(pageContent); drawingCanvas = new DrawingCanvas(pageContent);
drawingCanvasContainer.getChildren().add(drawingCanvas); drawingCanvasContainer.getChildren().add(drawingCanvas);
// 绑定Canvas大小到容器 // 使用AnchorPane的约束来填充容器
drawingCanvas.prefWidthProperty().bind(drawingCanvasContainer.widthProperty()); AnchorPane.setTopAnchor(drawingCanvas, 0.0);
drawingCanvas.prefHeightProperty().bind(drawingCanvasContainer.heightProperty()); AnchorPane.setLeftAnchor(drawingCanvas, 0.0);
AnchorPane.setRightAnchor(drawingCanvas, 0.0);
AnchorPane.setBottomAnchor(drawingCanvas, 0.0);
// 创建属性面板 // 创建属性面板
propertyPanelComponent = new PropertyPanel(drawingCanvas); propertyPanelComponent = new PropertyPanel(drawingCanvas);
@@ -1,10 +1,8 @@
package dev.bytevibe.hyperpoint; package dev.bytevibe.hyperpoint;
import javafx.geometry.Bounds;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
@@ -24,7 +22,7 @@ public class DrawingCanvas extends Pane {
public DrawingCanvas(PageContent pageContent) { public DrawingCanvas(PageContent pageContent) {
this.pageContent = pageContent; this.pageContent = pageContent;
this.canvas = new Canvas(755, 485); this.canvas = new Canvas();
getChildren().add(canvas); getChildren().add(canvas);
@@ -33,9 +31,18 @@ public class DrawingCanvas extends Pane {
setOnMouseDragged(this::handleMouseDragged); setOnMouseDragged(this::handleMouseDragged);
setOnMouseReleased(this::handleMouseReleased); setOnMouseReleased(this::handleMouseReleased);
setPrefSize(755, 485);
setStyle("-fx-border-color: #e0e0e0; -fx-border-width: 1;"); 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(); redraw();
} }
@@ -79,6 +86,8 @@ public class DrawingCanvas extends Pane {
} }
} }
/** /**
* 鼠标释放事件处理 * 鼠标释放事件处理
*/ */