Effect效果叠加之后的宽高
创建组件并添加效果
Rectangle rectangle = new Rectangle(100, 100); rectangle.setFill(Color.BLUE); DropShadow dropShadow = new DropShadow(); dropShadow.setRadius(20); GaussianBlur gaussianBlur = new GaussianBlur(5); dropShadow.setInput(gaussianBlur); rectangle.setEffect(dropShadow); AnchorPane root = new AnchorPane(); root.getChildren().addAll(rectangle); AnchorPane.setTopAnchor(rectangle, 100.0); AnchorPane.setLeftAnchor(rectangle, 100.0);
获取组件宽高
rectangle.setOnMouseClicked(event -> { // 防抖效果 if (event.getClickCount() == 1) { // 设置效果不会改变宽高 System.out.println(rectangle.getWidth() + "-" + rectangle.getHeight()); System.out.println(rectangle.getLayoutBounds()); // 坐标改变,相较于布局边界,本地布局延申的宽高为所有效果的半径之和 System.out.println(rectangle.getBoundsInLocal()); // 父组件布局延申的宽高为所有效果的半径之和 System.out.println(rectangle.getBoundsInParent()); } });
100.0-100.0
BoundingBox [minX:0.0, minY:0.0, minZ:0.0, width:100.0, height:100.0, depth:0.0, maxX:100.0, maxY:100.0, maxZ:0.0]
BoundingBox [minX:-25.0, minY:-25.0, minZ:0.0, width:150.0, height:150.0, depth:0.0, maxX:125.0, maxY:125.0, maxZ:0.0]
BoundingBox [minX:75.0, minY:75.0, minZ:0.0, width:150.0, height:150.0, depth:0.0, maxX:225.0, maxY:225.0, maxZ:0.0]