diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java index dbc956c85..3b991d4a0 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java @@ -776,8 +776,13 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo if (popup == null) { popup = new SelectedPopupDialog(this, designer); } - int extraX = (int) ((bounds.x + bounds.width + SelectedPopupDialog.OFFSET_X) * designer.getScale()); - int extraY = (int) (bounds.y * designer.getScale()); + int creatorRightX = (int) ((bounds.x + bounds.width + SelectedPopupDialog.OFFSET_X) * designer.getScale()); + int creatorRightY = (int) (bounds.y * designer.getScale()); + int formDesignerWidth = designer.getWidth(); + int formDesignerHeight = designer.getHeight(); + // 不超过可绘制区域 + int extraX = Math.min(creatorRightX, formDesignerWidth); + int extraY = creatorRightY < 0 ? 0 : Math.min(creatorRightY, formDesignerHeight); // 放到事件尾部执行 SwingUtilities.invokeLater(new Runnable() { @Override