Browse Source

REPORT-58209 【主题切换】配色编辑修改一个配色,会同时改变两列模板预览的配色内容

【问题原因】
在选择颜色时,两列颜色指向了同一个FineColor对象。
ColorListPane是所有主题色来源,包括选色器中的主题色,
所以需要避免自引用的问题

【改动思路】
同上
research/11.0
Starryi 3 years ago
parent
commit
c9118e0bec
  1. 5
      designer-base/src/main/java/com/fr/design/mainframe/theme/edit/ui/ColorListPane.java

5
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; package com.fr.design.mainframe.theme.edit.ui;
import com.fr.base.FineColor;
import com.fr.base.background.ColorBackground; import com.fr.base.background.ColorBackground;
import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
@ -160,7 +161,9 @@ public class ColorListPane extends JPanel implements UIObserver {
colorPane.addChangeListener(new ChangeListener() { colorPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
hidePopupMenu(); hidePopupMenu();
color = ((NewColorSelectPane) e.getSource()).getColor(); FineColor fineColor = ((NewColorSelectPane) e.getSource()).getColor();
// 不要直接使用原始的FineColor对象,它的值会变化,这里实际需要的内部的真实颜色
color = fineColor.getColor();
fireDisplayComponent(ColorBackground.getInstance(color)); fireDisplayComponent(ColorBackground.getInstance(color));
ColorListPane.ColorButton.this.fireStateChanged(); ColorListPane.ColorButton.this.fireStateChanged();
} }

Loading…
Cancel
Save