From 8132519b06d2e0c06156ba16904b4fcff584c976 Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 1 Dec 2023 15:47:34 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-109335=20=E5=9B=BD=E9=99=85=E5=8C=96?= =?UTF-8?q?=E4=B8=AD=EF=BC=8Cfr=E6=A8=A1=E6=9D=BF=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FormulaPaneWhenReserveFormula.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/formula/FormulaPaneWhenReserveFormula.java b/designer-base/src/main/java/com/fr/design/formula/FormulaPaneWhenReserveFormula.java index ab49b605d..82efb8cd4 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FormulaPaneWhenReserveFormula.java +++ b/designer-base/src/main/java/com/fr/design/formula/FormulaPaneWhenReserveFormula.java @@ -7,6 +7,11 @@ import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.FontMetrics; /** * @author richie @@ -42,6 +47,7 @@ public class FormulaPaneWhenReserveFormula extends FormulaPane { checkBoxPane.add(reserveCheckBox4Result, BorderLayout.WEST); checkBoxPane.add(reserveCheckBox4Write, BorderLayout.WEST); + calculatePaneHeightWithCount(checkBoxPane); } @Override @@ -60,4 +66,30 @@ public class FormulaPaneWhenReserveFormula extends FormulaPane { } return formula; } + + + /** + * 计算一下公式面板textPane的实际高度 + * 目前已知英文国际化下文本较长,右侧check按钮无法正常展示,实际俄文有可能更长,因此写一个换行规则 + * 不影响中文效果 + * + * @param checkBoxPane textPane + */ + private void calculatePaneHeightWithCount(JPanel checkBoxPane) { + int componentsWidth = 0; + int currentPaneHeight = checkBoxPane.getPreferredSize().height; + int currentPaneWidth = checkBoxPane.getPreferredSize().width; + int hGap = ((FlowLayout) checkBoxPane.getLayout()).getHgap(); + for (Component component : checkBoxPane.getComponents()) { + if(component instanceof UICheckBox) { + Font font = component.getFont(); + FontMetrics fontMetrics = component.getFontMetrics(font); + int width = fontMetrics.stringWidth(((UICheckBox) component).getText()); + componentsWidth += width + hGap; + } + } + int count = (componentsWidth / currentPaneWidth) + 1; + int resultPaneHeight = count * currentPaneHeight; + checkBoxPane.setPreferredSize(new Dimension(currentPaneWidth, resultPaneHeight)); + } } \ No newline at end of file