diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java
index b55479dc9a..2196b58eea 100644
--- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java
+++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTableModel.java
@@ -347,10 +347,10 @@ public class TableDataDesensitizationTableModel extends UITableModelAdapter<Tabl
      */
     private class EffectedRolesChooser extends AbstractCellEditor implements TableCellEditor {
 
-        private EffectedRolesComboBox rolesCheckBox;
+        private UIComboCheckBox rolesCheckBox;
 
         EffectedRolesChooser() {
-            rolesCheckBox = new EffectedRolesComboBox();
+            rolesCheckBox = new UIComboCheckBox(roleMap.values().toArray());
             this.addCellEditorListener(new CellEditorListener() {
                 @Override
                 public void editingStopped(ChangeEvent e) {
@@ -417,28 +417,6 @@ public class TableDataDesensitizationTableModel extends UITableModelAdapter<Tabl
             return rolesCheckBox.getSelectedValues();
         }
 
-
-        private class EffectedRolesComboBox extends UIComboCheckBox {
-            public EffectedRolesComboBox() {
-                super(roleMap.values().toArray(), true);
-            }
-            @Override
-            protected void setLayoutAndAddComponents() {
-                // 使用BorderLayout,否则默认使用的FlowLayout会让整个下拉选框使用最小Size,然后TableCell这边会出现空白
-                this.setLayout(FRGUIPaneFactory.createBorderLayout());
-                JPanel pane = getClickPane();
-                pane.setOpaque(false);
-                this.add(pane, BorderLayout.CENTER);
-            }
-
-            @Override
-            protected void setEditorToolTipText(JComponent editor, String text) {
-                // 选项过多时,已选中的值会做省略显示处理,此处添加一个Tooltips,显示完整值
-                if (text != null) {
-                    editor.setToolTipText(text);
-                }
-            }
-        }
     }
 
     /**
diff --git a/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java b/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java
index 400c5594ab..7c710badea 100644
--- a/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java
+++ b/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java
@@ -2,8 +2,6 @@ package com.fr.design.gui.icombocheckbox;
 
 import com.fine.theme.icon.LazyIcon;
 import com.fine.theme.light.ui.FineRoundBorder;
-import com.fine.theme.utils.FineUIUtils;
-import com.formdev.flatlaf.util.ScaledEmptyBorder;
 import com.fr.design.event.GlobalNameListener;
 import com.fr.design.event.GlobalNameObserver;
 import com.fr.design.event.HoverAware;
@@ -19,13 +17,13 @@ import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JFrame;
 import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
 import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.FlowLayout;
 import java.awt.FontMetrics;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -39,7 +37,6 @@ import java.util.Map;
 
 import static com.fine.theme.utils.FineUIStyle.OFFET_LEFT_TEXT_FIELD;
 import static com.fine.theme.utils.FineUIStyle.PLAIN_ARROW_BUTTON;
-import static com.fine.theme.utils.FineUIStyle.TRANSPARENT_TEXT_FIELD;
 import static com.fine.theme.utils.FineUIStyle.setStyle;
 
 /**
@@ -143,7 +140,7 @@ public class UIComboCheckBox extends JComboBox implements UIObserver, GlobalName
         initClickPane();
 
         setLayoutAndAddComponents();
-        setText();
+        SwingUtilities.invokeLater(this::setText);
 
         addPopupListener(this);
     }
@@ -152,10 +149,12 @@ public class UIComboCheckBox extends JComboBox implements UIObserver, GlobalName
      * 设置布局管理器并且添加组件
      * 默认使用FlowLayout
      */
-    protected void setLayoutAndAddComponents() {
-        this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
-        this.add(editor);
-        this.add(arrowButton);
+    private void setLayoutAndAddComponents() {
+        // 使用BorderLayout,否则默认使用的FlowLayout会让整个下拉选框使用最小Size,然后TableCell这边会出现空白
+        this.setLayout(FRGUIPaneFactory.createBorderLayout());
+        JPanel pane = getClickPane();
+        pane.setOpaque(false);
+        this.add(pane, BorderLayout.CENTER);
     }
 
     public UICheckListPopup getPopup() {
@@ -341,7 +340,10 @@ public class UIComboCheckBox extends JComboBox implements UIObserver, GlobalName
      * @param text
      */
     protected void setEditorToolTipText(JComponent editor, String text) {
-        // 默认不做设置
+        // 选项过多时,已选中的值会做省略显示处理,此处添加一个Tooltips,显示完整值
+        if (text != null) {
+            editor.setToolTipText(text);
+        }
     }
 
     /**
@@ -360,6 +362,10 @@ public class UIComboCheckBox extends JComboBox implements UIObserver, GlobalName
         String omitText = StringUtils.EMPTY;
         char[] chars = text.toCharArray();
 
+        if (textEditor.getWidth() == 0) {
+            return text;
+        }
+
         for (int i = 1; i <= chars.length; i++) {
             //如果原文本+省略号长度超过文本框
             if (fontMetrics.charsWidth(chars, 0, i) + omitLength > textEditor.getWidth()) {
@@ -497,26 +503,4 @@ public class UIComboCheckBox extends JComboBox implements UIObserver, GlobalName
     public String getUIClassID() {
         return UI_CLASS_ID;
     }
-
-    /**
-     * 简单的测试demo
-     *
-     * @param args
-     */
-    public static void main(String args[]) {
-        UIComboCheckBox comboBox = new UIComboCheckBox(new Object[]
-                {"MATA", "HANA", "KAKA", "KUKA", "INFI", "LILY", "RIBO", "CUBE", "MATA", "HANA", "KAKA", "KUKA"});
-
-        comboBox.isShowOmitText(false);
-        comboBox.setPopupMaxDisplayNumber(6);
-
-        JPanel jPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
-        jPanel.add(comboBox);
-
-        JFrame jFrame = new JFrame();
-        jFrame.setVisible(true);
-        jFrame.setSize(600, 400);
-        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        jFrame.add(jPanel, BorderLayout.CENTER);
-    }
 }
diff --git a/designer-base/src/test/java/com/fr/design/gui/storybook/components/ComboCheckBoxStoryBoard.java b/designer-base/src/test/java/com/fr/design/gui/storybook/components/ComboCheckBoxStoryBoard.java
index 21a2bc7e28..7b51ff8710 100644
--- a/designer-base/src/test/java/com/fr/design/gui/storybook/components/ComboCheckBoxStoryBoard.java
+++ b/designer-base/src/test/java/com/fr/design/gui/storybook/components/ComboCheckBoxStoryBoard.java
@@ -3,11 +3,8 @@ package com.fr.design.gui.storybook.components;
 import com.fr.design.gui.icombocheckbox.UIComboCheckBox;
 import com.fr.design.gui.ilable.UILabel;
 import com.fr.design.gui.storybook.StoryBoard;
-import com.fr.design.layout.FRGUIPaneFactory;
 import com.fr.stable.ArrayUtils;
 
-import javax.swing.JPanel;
-import java.awt.BorderLayout;
 
 import static com.fine.swing.ui.layout.Layouts.cell;
 import static com.fine.swing.ui.layout.Layouts.flex;
@@ -32,15 +29,7 @@ public class ComboCheckBoxStoryBoard extends StoryBoard {
     }
 
     private UIComboCheckBox getComboCheckBox(Object[] array) {
-        return new UIComboCheckBox(array, true) {
-            protected void setLayoutAndAddComponents() {
-                // 使用BorderLayout,否则默认使用的FlowLayout会让整个下拉选框使用最小Size,然后TableCell这边会出现空白
-                this.setLayout(FRGUIPaneFactory.createBorderLayout());
-                JPanel pane = getClickPane();
-                pane.setOpaque(false);
-                this.add(pane, BorderLayout.CENTER);
-            }
-        };
+        return new UIComboCheckBox(array, true) {};
     }
 
 }
diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java
index 75d8058c27..843168091f 100644
--- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java
+++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java
@@ -17,16 +17,13 @@ import com.fr.design.gui.icombocheckbox.UIComboCheckBox;
 import com.fr.design.gui.ilable.UILabel;
 import com.fr.design.gui.itextfield.UITextField;
 import com.fr.design.i18n.Toolkit;
-import com.fr.design.layout.FRGUIPaneFactory;
 import com.fr.report.cell.desensitization.CellDesensitizationBean;
 import com.fr.stable.StringUtils;
 import com.fr.third.org.apache.commons.collections4.map.HashedMap;
 
 import javax.swing.BorderFactory;
-import javax.swing.JComponent;
 import javax.swing.JPanel;
 import javax.swing.SwingUtilities;
-import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.FontMetrics;
@@ -288,21 +285,6 @@ public class DesensitizationCellPane extends BasicBeanPane {
             super(DesensitizationCellPane.this.roleMap.values().toArray(), true);
         }
 
-        @Override
-        protected void setLayoutAndAddComponents() {
-            // 使用BorderLayout,否则默认使用的FlowLayout会让整个下拉选框使用最小Size,然后TableCell这边会出现空白
-            this.setLayout(FRGUIPaneFactory.createBorderLayout());
-            this.add(getClickPane(), BorderLayout.CENTER);
-        }
-
-        @Override
-        protected void setEditorToolTipText(JComponent editor, String text) {
-            // 选项过多时,已选中的值会做省略显示处理,此处添加一个Tooltips,显示完整值
-            if (text != null) {
-                editor.setToolTipText(text);
-            }
-        }
-
         @Override
         protected void setEditorPlaceHolder(UITextField editor) {
             editor.setPlaceholder(this.getPlaceHolder());