Browse Source

REPORT-32520 修改页面设置超过2000后预览不能正常显示宽和高的bug

bugfix/10.0
assassion 5 years ago
parent
commit
322f01e340
  1. 32
      designer-realize/src/main/java/com/fr/design/report/PageSetupPane.java

32
designer-realize/src/main/java/com/fr/design/report/PageSetupPane.java

@ -19,25 +19,20 @@ import java.awt.event.FocusEvent;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import javax.swing.BorderFactory; import javax.swing.*;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import com.fr.design.gui.ispinner.ColumnRowSpinner;
import com.fr.page.PaperSettingProvider; import com.fr.page.PaperSettingProvider;
import com.fr.page.ReportSettingsProvider; import com.fr.page.ReportSettingsProvider;
import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.frpane.UITabbedPane;
import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import javax.swing.text.NumberFormatter;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.Margin; import com.fr.base.Margin;
@ -212,6 +207,13 @@ public class PageSetupPane extends BasicPane {
((JSpinner.DefaultEditor) paperWidthSpinner.getEditor()).getTextField().setColumns(7); ((JSpinner.DefaultEditor) paperWidthSpinner.getEditor()).getTextField().setColumns(7);
paperHeightSpinner = new UIBasicSpinner(new SpinnerNumberModel(0.0, 0.0, Double.MAX_VALUE, 1.0)); paperHeightSpinner = new UIBasicSpinner(new SpinnerNumberModel(0.0, 0.0, Double.MAX_VALUE, 1.0));
((JSpinner.DefaultEditor) paperHeightSpinner.getEditor()).getTextField().setColumns(7); ((JSpinner.DefaultEditor) paperHeightSpinner.getEditor()).getTextField().setColumns(7);
JFormattedTextField txt = ((JSpinner.NumberEditor) paperWidthSpinner.getEditor()).getTextField();
((NumberFormatter) txt.getFormatter()).setAllowsInvalid(false);
txt = ((JSpinner.NumberEditor) paperHeightSpinner.getEditor()).getTextField();
((NumberFormatter) txt.getFormatter()).setAllowsInvalid(false);
unitLabel = new UnitFieldPane.UnitLabel(Constants.UNIT_MM, paperHeightSpinner.getPreferredSize().height); unitLabel = new UnitFieldPane.UnitLabel(Constants.UNIT_MM, paperHeightSpinner.getPreferredSize().height);
String[] inch = {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_MM"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_INCH")}; String[] inch = {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_MM"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Unit_INCH")};
@ -738,8 +740,8 @@ public class PageSetupPane extends BasicPane {
return; return;
} }
// 最大2000,以免画的时候超边 // 最大2000,以免画的时候超边
this.paper_width = Math.min(paper_width, 2000); this.paper_width = Math.min(paper_width, Double.MAX_VALUE);
this.paper_height = Math.min(paper_height, 2000); this.paper_height = Math.min(paper_height, Double.MAX_VALUE);
this.paper_orientation = paper_orientation; this.paper_orientation = paper_orientation;
length_scale = !useLocale ? NUM_3 : NUM_POINT_3; length_scale = !useLocale ? NUM_3 : NUM_POINT_3;
} }
@ -766,18 +768,24 @@ public class PageSetupPane extends BasicPane {
FontMetrics fm = g2d.getFontMetrics(); FontMetrics fm = g2d.getFontMetrics();
// 横向的长度 // 横向的长度
String w_str = "" + paper_width; String w_str = "" + paper_width;
if (w_str.indexOf(CoreConstants.DOT) > 0) { if (!w_str.contains("E")&&w_str.indexOf(CoreConstants.DOT) > 0) {
w_str = w_str.substring(0, w_str.indexOf(CoreConstants.DOT) + 2); w_str = w_str.substring(0, w_str.indexOf(CoreConstants.DOT) + 2);
} }
int w_length = fm.stringWidth(w_str); int w_length = fm.stringWidth(w_str);
paint_width = Math.max(paint_width, w_length + 26); paint_width = Math.max(paint_width, w_length + 26);
// 纵向的长度 // 纵向的长度
String h_str = "" + paper_height; String h_str = "" + paper_height;
if (h_str.indexOf(".") > 0) { //使用科学计数法显示长度的时候,限制纵向显示长度为9位
if (h_str.contains("E")){
String str1=h_str.substring(h_str.indexOf("E"));
String str2=h_str.substring(0,9-str1.length());
h_str = str2+str1;
}else if(h_str.indexOf(".") > 0) {
h_str = h_str.substring(0, h_str.indexOf(".") + 2); h_str = h_str.substring(0, h_str.indexOf(".") + 2);
} }
int h_length = fm.stringWidth(h_str); int h_length = fm.stringWidth(h_str);
paint_height = Math.max(paint_height, h_length + 26); paint_height = Math.max(paint_height, h_length + 26);
paint_height = Math.min(paint_height, 75);
double startX = (pane_width - paint_width) / 2; double startX = (pane_width - paint_width) / 2;
double startY = (pane_height - paint_height) / 2; double startY = (pane_height - paint_height) / 2;
g2d.translate(startX, startY); g2d.translate(startX, startY);

Loading…
Cancel
Save