diff --git a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java index 6a9202c1cb..b58850eaa8 100644 --- a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java +++ b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java @@ -2,8 +2,6 @@ package com.fr.design.designer.properties; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.adapters.layout.FRFitLayoutAdapter; -import com.fr.design.designer.creator.XCreatorUtils; -import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.editors.IntegerPropertyEditor; @@ -12,8 +10,9 @@ import com.fr.design.designer.beans.ConstraintsGroupModel; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.utils.ComponentUtils; -import com.fr.form.ui.Widget; +import com.fr.form.ui.PaddingMargin; import com.fr.form.ui.container.WFitLayout; +import com.fr.form.ui.container.WLayout; import com.fr.general.Inter; import javax.swing.*; @@ -30,8 +29,8 @@ import java.awt.*; */ //控件在自适应布局中宽度、高度属性,7.1.1不可编辑 public class FRFitLayoutConstraints implements ConstraintsGroupModel { - private static final int MINHEIGHT = XCreator.SMALL_PREFERRED_SIZE.height; - private static final int MINWIDTH = XCreator.SMALL_PREFERRED_SIZE.width; + private static final int MINHEIGHT = WLayout.MIN_HEIGHT; + private static final int MINWIDTH = WLayout.MIN_WIDTH; private static final int ROWNUM = 2; private DefaultTableCellRenderer renderer; @@ -91,31 +90,39 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { int v = value == null ? 0 : ((Number) value).intValue(); int difference = 0; Rectangle bounds = getBounds(); + Rectangle rec = ComponentUtils.getRelativeBounds(parent); + WFitLayout wFitLayout = parent.toData(); + int minHeight = (int)(MINHEIGHT * wFitLayout.getResolutionScaling()); + int minWidth = (int)(MINWIDTH * wFitLayout.getResolutionScaling()); + PaddingMargin margin= wFitLayout.getMargin(); switch (row) { case 0: - if(v < MINWIDTH){ - JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Width") + Integer.toString(MINWIDTH)); - v = xCreator.getWidth(); - } if (bounds.width == v){ return false; } + if(bounds.width == rec.width - margin.getLeft() - margin.getRight()){ + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Bounds")); + }else if(v < minWidth){ + JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Width") + Integer.toString(minWidth)); + v = xCreator.getWidth(); + } difference = bounds.width - v; bounds.width = v; break; case 1: - if(v < MINHEIGHT){ - JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Height") + Integer.toString(MINHEIGHT)); - v = xCreator.getHeight(); - } if (bounds.height == v){ return false; } + if(bounds.height == rec.height - margin.getTop() - margin.getBottom()){ + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Bounds")); + }else if(v < minHeight){ + JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Height") + Integer.toString(minHeight)); + v = xCreator.getHeight(); + } difference = bounds.height - v; bounds.height = v; break; } - WFitLayout wFitLayout = parent.toData(); wFitLayout.setBounds(xCreator.toData(),bounds); FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); Rectangle backupBounds = getBounds(); @@ -131,7 +138,6 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { public Rectangle getBounds(){ Rectangle bounds = new Rectangle(xCreator.getBounds()); - XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator); if (parent == null) { return bounds; }