Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package tools.tracesviewer;
  
  import java.awt.*;
  import java.util.*;

Lays out components within a Container such that each component takes a fixed percentage of the size. Each Component added to the Container must have a Constraint object that specifies what proportion of the container it will fill. The Component will be stretched to fill exactly that percentage.

See also:
Constraint
 
 public class PercentLayout implements LayoutManager2 {
     public void addLayoutComponent(Component componentObject constraint) {
         if (constraint instanceof PercentLayoutConstraint) {
             .put(componentconstraint);
         } else {
             throw new IllegalArgumentException("Invalid constraint");
 
         }
     }
     public void addLayoutComponent(String constraintComponent comp) {
         throw new IllegalArgumentException("Invalid constraint");
     }
     public void removeLayoutComponent(Component component) {
         .remove(component);
     }
 
     public Dimension preferredLayoutSize(Container p1) {
         int prefx = 0;
         int prefy = 0;
 
         Enumeration keys = .keys();
         while (keys.hasMoreElements()) {
             Component comp = (Componentkeys.nextElement();
             PercentLayoutConstraint constraint =
                 (PercentLayoutConstraint.get(comp);
             Dimension pref = comp.getPreferredSize();
             prefx += pref.width * 100 / constraint.width;
             prefy += pref.height * 100 / constraint.height;
         }
         int n = .size();
         return new Dimension(prefx / nprefy / n);
     }
     public Dimension minimumLayoutSize(Container p1) {
         int minx = 0;
         int miny = 0;
 
         Enumeration keys = .keys();
         while (keys.hasMoreElements()) {
             Component comp = (Componentkeys.nextElement();
             PercentLayoutConstraint constraint =
                 (PercentLayoutConstraint.get(comp);
             Dimension min = comp.getMinimumSize();
             int mx = (int) (min.width * 100 / constraint.width);
             int my = (int) (min.height * 100 / constraint.height);
             if (mx > minx)
                 minx = mx;
             if (my > miny)
                 miny = my;
         }
         return new Dimension(minxminy);
     }
     public Dimension maximumLayoutSize(Container p1) {
         int maxx = .;
         int maxy = .;
 
         Enumeration keys = .keys();
         while (keys.hasMoreElements()) {
             Component comp = (Componentkeys.nextElement();
             PercentLayoutConstraint constraint =
                 (PercentLayoutConstraint.get(comp);
             Dimension max = comp.getMaximumSize();
             int mx =
                 max.width == .
                     ? max.width
                     : (int) (max.width * 100 / constraint.width);
             int my =
                 max.height == .
                     ? max.height
                     : (int) (max.height * 100 / constraint.height);
             if (mx < maxx)
                 maxx = mx;
             if (my < maxy)
                 maxy = my;
         }
         return new Dimension(maxxmaxy);
     }
     public void layoutContainer(Container p1) {
         Dimension size = p1.getSize();
         Enumeration keys = .keys();
         while (keys.hasMoreElements()) {
             Component comp = (Componentkeys.nextElement();
             PercentLayoutConstraint constraint =
                 (PercentLayoutConstraint.get(comp);
             int x = (int) (size.width * constraint.x / 100);
             int y = (int) (size.height * constraint.y / 100);
             int width = (int) (size.width * constraint.width / 100);
            int height = (int) (size.height * constraint.height / 100);
            comp.setBounds(xywidthheight);
        }
    }
    public void invalidateLayout(Container p1) {
    }
    public float getLayoutAlignmentY(Container p1) {
        return 0.5f;
    }
    public float getLayoutAlignmentX(Container p1) {
        return 0.5f;
    }
    private Hashtable hash = new Hashtable();
New to GrepCode? Check out our FAQ X