diff --git a/designer-base/src/main/java/com/fine/theme/light/ui/FineComboCheckBoxUI.java b/designer-base/src/main/java/com/fine/theme/light/ui/FineComboCheckBoxUI.java new file mode 100644 index 0000000000..dd63f1c3be --- /dev/null +++ b/designer-base/src/main/java/com/fine/theme/light/ui/FineComboCheckBoxUI.java @@ -0,0 +1,37 @@ +package com.fine.theme.light.ui; + +import com.formdev.flatlaf.ui.FlatComboBoxUI; + +import javax.swing.JComponent; +import javax.swing.UIManager; +import javax.swing.plaf.ComponentUI; + + +/** + * {@link com.fr.design.gui.icombocheckbox.UIComboCheckBox} 的 UI 样式 + * + * @author lemon + * @since 12.0 + * Created on 2024/09/27 + */ +public class FineComboCheckBoxUI extends FlatComboBoxUI { + + public FineComboCheckBoxUI() { + super(); + } + + /** + * 创建UI + */ + public static ComponentUI createUI(JComponent c) { + return new FineComboCheckBoxUI(); + } + + @Override + public void installUI(JComponent c) { + super.installUI(c); + c.setBackground(UIManager.getColor("ComboCheckBox.background")); + c.setBorder(UIManager.getBorder("ComboCheckBox.border")); + } + +} 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 new file mode 100644 index 0000000000..21a2bc7e28 --- /dev/null +++ b/designer-base/src/test/java/com/fr/design/gui/storybook/components/ComboCheckBoxStoryBoard.java @@ -0,0 +1,46 @@ +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; + +public class ComboCheckBoxStoryBoard extends StoryBoard { + public ComboCheckBoxStoryBoard() { + super("下拉多选框"); + + + add( + cell(new UILabel("普通状态")).with(this::h3), + cell(getComboCheckBox(ArrayUtils.toArray("测试1", "测试2", "测试3", "测试4"))), + + cell(new UILabel("长文字状态")).with(this::h3), + cell(getComboCheckBox(ArrayUtils.toArray("测试长文字1测试长文字1测试长文字1测试长文字1测试长文字1测试长文字1测试长文字1", + "测试长文字2测试长文字2测试长文字2测试长文字2测试长文字2测试长文字2测试长文字2", + "测试长文字3测试长文字3测试长文字3测试长文字3测试长文字3测试长文字3测试长文字3", + "测试长文字4测试长文字4测试长文字4测试长文字4测试长文字4测试长文字4测试长文字4"))), + + flex() + ); + } + + 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); + } + }; + } + +}