From cd9cb64059e2ea24c644537e70104a09b5691d1f Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Tue, 17 Oct 2023 11:39:44 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-105998=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E7=BC=A9=E6=94=BE=E6=AF=94=E4=BE=8B=E8=BE=83=E5=B0=8F=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E7=94=BB=E5=B8=83=E9=80=89=E4=B8=AD=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=9C=89=E5=81=8F=E5=B7=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/FormArea.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java b/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java index e515dd1f35..94886f9d46 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java @@ -8,11 +8,11 @@ import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWBorderLayout; import com.fr.design.designer.creator.XWFitLayout; +import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonUI; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIPopupMenu; -import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.gui.itextfield.UINumberField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; @@ -540,21 +540,26 @@ public class FormArea extends JComponent implements ScrollRulerComponent { } //获取在容器的绝对位置 Rectangle rec = ComponentUtils.getRelativeBounds(creator); + // 组件实际大小、位置要考虑缩放 int dWidth = getDesignerWidth(); - if (rec.width <= dWidth && rec.x < getHorizontalValue()) { + double recRealWidth = rec.width * designer.getScale(); + double recRealX = rec.x * designer.getScale(); + if (recRealWidth <= dWidth && recRealX < getHorizontalValue()) { //在边界内部且x位置小于水平滚动条的值 - horScrollBar.setValue(rec.x); - } else if (rec.x + rec.width > dWidth + horizontalValue) { + horScrollBar.setValue((int) recRealX); + } else if (recRealX + recRealWidth > dWidth + horizontalValue) { //超出边界宽度 - horScrollBar.setValue(rec.x + rec.width - dWidth); + horScrollBar.setValue((int) (recRealX + recRealWidth - dWidth)); } int dHeight = getDesignerHeight(); - if (rec.height < dHeight && rec.y < getVerticalValue()) { + double recRealHeight = rec.height * designer.getScale(); + double recRealY = rec.y * designer.getScale(); + if (recRealHeight < dHeight && recRealY < getVerticalValue()) { //在边界内部且y位置小于竖直滚动条的值 - verScrollBar.setValue(rec.y); - } else if (rec.y + rec.height > dHeight + verticalValue) { + verScrollBar.setValue((int) recRealY); + } else if (recRealY + recRealHeight > dHeight + verticalValue) { //超出边界高度 - verScrollBar.setValue(rec.y + rec.height - dHeight); + verScrollBar.setValue((int) (recRealY + recRealHeight - dHeight)); } }