From e527377c5cd696b02b462aadab3ed27278e084c2 Mon Sep 17 00:00:00 2001 From: Starryi Date: Fri, 23 Jul 2021 13:43:01 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-55694=20=E3=80=90=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E8=83=8C=E6=99=AF=E5=88=86=E7=A6=BB=E3=80=91=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=A4=8D=E7=94=A8-=E7=BB=84=E4=BB=B6/=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E9=94=81=E5=AE=9A=E6=97=B6=EF=BC=8C=E9=80=9A=E8=BF=87=E5=8F=B3?= =?UTF-8?q?=E4=BE=A7=E8=AE=BE=E7=BD=AE=E9=9D=A2=E6=9D=BF=E5=85=88=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=AE=BD=E5=BA=A6=E6=97=B6=EF=BC=8C=E9=AB=98=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E5=8F=98=EF=BC=9B=E4=BD=86=E5=87=8F=E5=B0=8F=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6=E6=97=B6=EF=BC=8C=E9=AB=98=E5=BA=A6=E4=BC=9A1?= =?UTF-8?q?=E5=8D=95=E4=BD=8D1=E5=8D=95=E4=BD=8D=E5=87=8F=E5=B0=8F?= =?UTF-8?q?=EF=BC=8C=E6=9C=80=E5=90=8E=E7=BB=84=E4=BB=B6=E5=8F=98=E6=88=90?= =?UTF-8?q?=E4=B8=80=E6=9D=A1=E6=A8=AA=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 1. 直接编辑宽度和高度,互相联动,存在小数舍入的问题,比如20.75,只取20,导致越来越小 2. 在锁定比例功能从未启动到启动时,需要保存尺寸比例,并持久化,否则再次打开模版后,原有的比例数据 就消失了 【改动思路】 1. WidgetBoundPane.java中widthSpinner和heightSpinner互相关联时, 使用Math.round取整,而不是直接取整数部分 2. 在启用比例锁定时,保存当前的aspectRatioBackup,除非关闭比例锁定,否则不更新改值 3. 高度或宽度为0时,取消比例锁定,避免出现除0问题 4. 绝对布局内组件移入移出时,重新计算锁定的尺寸比例 --- .../ui/designer/component/WidgetBoundPane.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java index 2fdec31e1..a462a8aed 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java @@ -265,11 +265,13 @@ public class WidgetBoundPane extends BasicPane { @Override public void stateChanged(ChangeEvent e) { if (isLockEnabled() && isLocked()) { - setLocked(false); - aspectRatioBackup = -1; - } else if (aspectRatioBackup > 0) { - double value = mHeightSpinner.getValue() * aspectRatioBackup; - mWidthSpinner.setValue(Math.round(value), false); + if (mHeightSpinner.getValue() == 0) { + setLocked(false); + aspectRatioBackup = -1; + }else if (aspectRatioBackup > 0) { + double value = mHeightSpinner.getValue() * aspectRatioBackup; + mWidthSpinner.setValue(Math.round(value), false); + } } } });