From c9118e0becd0d12bc4864a582031b3ad1e8e01e5 Mon Sep 17 00:00:00 2001 From: Starryi Date: Fri, 27 Aug 2021 10:12:46 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-58209=20=E3=80=90=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E3=80=91=E9=85=8D=E8=89=B2=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=AA=E9=85=8D=E8=89=B2=EF=BC=8C?= =?UTF-8?q?=E4=BC=9A=E5=90=8C=E6=97=B6=E6=94=B9=E5=8F=98=E4=B8=A4=E5=88=97?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=A2=84=E8=A7=88=E7=9A=84=E9=85=8D=E8=89=B2?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 在选择颜色时,两列颜色指向了同一个FineColor对象。 ColorListPane是所有主题色来源,包括选色器中的主题色, 所以需要避免自引用的问题 【改动思路】 同上 --- .../com/fr/design/mainframe/theme/edit/ui/ColorListPane.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListPane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListPane.java index ff9f8c6e7..2bf1931f1 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListPane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.theme.edit.ui; +import com.fr.base.FineColor; import com.fr.base.background.ColorBackground; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; @@ -160,7 +161,9 @@ public class ColorListPane extends JPanel implements UIObserver { colorPane.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { hidePopupMenu(); - color = ((NewColorSelectPane) e.getSource()).getColor(); + FineColor fineColor = ((NewColorSelectPane) e.getSource()).getColor(); + // 不要直接使用原始的FineColor对象,它的值会变化,这里实际需要的内部的真实颜色 + color = fineColor.getColor(); fireDisplayComponent(ColorBackground.getInstance(color)); ColorListPane.ColorButton.this.fireStateChanged(); }