From ca9adb83ede082e06669eb59b011c22951ec21ba Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 27 Sep 2024 15:17:25 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-132266=20fix:=20=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E5=A4=9A=E9=80=89=E6=A1=86=E6=95=B0=E6=8D=AE=20Windows=20?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=95=B0=E6=8D=AE=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theme/light/ui/FineComboCheckBoxUI.java | 37 +++++++++++++++ .../components/ComboCheckBoxStoryBoard.java | 46 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 designer-base/src/main/java/com/fine/theme/light/ui/FineComboCheckBoxUI.java create mode 100644 designer-base/src/test/java/com/fr/design/gui/storybook/components/ComboCheckBoxStoryBoard.java 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); + } + }; + } + +}