From 8013627bcc22ae4658c3c96faa845a99a4ea5708 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 14 Aug 2024 20:52:52 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-127437=20fix:setui=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../light/ui/FineTableScrollBarPaneUI.java | 27 ++++++++++++++----- .../gui/icontainer/UITableScrollPane.java | 1 - .../gui/iscrollbar/UIVerticalScrollBar.java | 11 ++++---- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/designer-base/src/main/java/com/fine/theme/light/ui/FineTableScrollBarPaneUI.java b/designer-base/src/main/java/com/fine/theme/light/ui/FineTableScrollBarPaneUI.java index 9e18e17b45..0da29904ca 100644 --- a/designer-base/src/main/java/com/fine/theme/light/ui/FineTableScrollBarPaneUI.java +++ b/designer-base/src/main/java/com/fine/theme/light/ui/FineTableScrollBarPaneUI.java @@ -1,9 +1,11 @@ package com.fine.theme.light.ui; import com.formdev.flatlaf.ui.FlatScrollBarUI; +import com.fr.design.gui.iscrollbar.UIVerticalScrollBar; import javax.swing.JComponent; import javax.swing.JTable; +import javax.swing.plaf.ComponentUI; import java.awt.Graphics; import java.awt.Rectangle; @@ -16,12 +18,20 @@ import java.awt.Rectangle; */ public class FineTableScrollBarPaneUI extends FlatScrollBarUI { - private final JTable table; + public FineTableScrollBarPaneUI() { + } - public FineTableScrollBarPaneUI(JTable table) { - this.table = table; + /** + * 创建UI + * + * @param c 组件 + * @return ComponentUI + */ + public static ComponentUI createUI(JComponent c) { + return new FineTableScrollBarPaneUI(); } + @Override protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) { super.paintTrack(g, c, trackBounds); @@ -29,10 +39,13 @@ public class FineTableScrollBarPaneUI extends FlatScrollBarUI { @Override protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) { - // 确保滚动条滑块不会超过表头区域 - Rectangle headerRect = table.getTableHeader().getBounds(); - int headerHeight = headerRect.height; - thumbBounds.y = Math.max(thumbBounds.y, headerHeight); + if (c instanceof UIVerticalScrollBar) { + // 确保滚动条滑块不会超过表头区域 + JTable table = ((UIVerticalScrollBar) c).getTable(); + Rectangle headerRect = table.getTableHeader().getBounds(); + int headerHeight = headerRect.height; + thumbBounds.y = Math.max(thumbBounds.y, headerHeight); + } super.paintThumb(g, c, thumbBounds); } diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UITableScrollPane.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UITableScrollPane.java index 204ebfdfc0..2d0807409b 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UITableScrollPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UITableScrollPane.java @@ -1,7 +1,6 @@ package com.fr.design.gui.icontainer; import com.fr.design.gui.iscrollbar.UIVerticalScrollBar; -import com.fr.design.gui.itable.FineUITable; import javax.swing.JScrollBar; import javax.swing.JTable; diff --git a/designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIVerticalScrollBar.java b/designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIVerticalScrollBar.java index ae5f8e589b..a323933db3 100644 --- a/designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIVerticalScrollBar.java +++ b/designer-base/src/main/java/com/fr/design/gui/iscrollbar/UIVerticalScrollBar.java @@ -1,7 +1,5 @@ package com.fr.design.gui.iscrollbar; -import com.fine.theme.light.ui.FineTableScrollBarPaneUI; - import javax.swing.JTable; /** @@ -15,16 +13,19 @@ public class UIVerticalScrollBar extends UIScrollBar { private static final String UI_CLASS_ID = "TableVerticalBarUI"; private static final long serialVersionUID = 1L; - public UIVerticalScrollBar() { - } + public JTable table; public UIVerticalScrollBar(JTable table, int orientation) { super(orientation); - this.setUI(new FineTableScrollBarPaneUI(table)); + this.table = table; } public String getUIClassID() { return UI_CLASS_ID; } + public JTable getTable() { + return this.table; + } + }