⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 borderlayout.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * @param target The container to calculate the minimum size for.   *   * @return The minimum size of the container   */  public Dimension minimumLayoutSize(Container target)  {    return calcSize(target, MIN);  }  /**   * Returns the preferred size of the specified container using this layout.   *   * @param target The container to calculate the preferred size for.   *   * @return The preferred size of the container   */  public Dimension preferredLayoutSize(Container target)  {    return calcSize(target, PREF);  }  /**   * Returns the maximum size of the specified container using this layout.   *   * @param target The container to calculate the maximum size for.   *   * @return The maximum size of the container   */  public Dimension maximumLayoutSize(Container target)  {    return calcSize(target, MAX);  }  /**   * Returns the X axis alignment, which is a <code>float</code> indicating   * where along the X axis this container wishs to position its layout.   * 0 indicates align to the left, 1 indicates align to the right, and 0.5   * indicates align to the center.   *   * @param parent The parent container.   *   * @return The X alignment value.   */  public float getLayoutAlignmentX(Container parent)  {    return 0.5F;  }  /**   * Returns the Y axis alignment, which is a <code>float</code> indicating   * where along the Y axis this container wishs to position its layout.   * 0 indicates align to the top, 1 indicates align to the bottom, and 0.5   * indicates align to the center.   *   * @param parent The parent container.   *   * @return The Y alignment value.   */  public float getLayoutAlignmentY(Container parent)  {    return 0.5F;  }  /**   * Instructs this object to discard any layout information it might   * have cached.   *   * @param parent The parent container.   */  public void invalidateLayout(Container parent)  {    // Nothing to do here.  }  /**   * Lays out the specified container according to the constraints   * in this object.   *   * @param target The container to lay out.   */  public void layoutContainer(Container target)  {    synchronized (target.getTreeLock ())      {        Insets i = target.getInsets();        ComponentOrientation orient = target.getComponentOrientation ();        boolean left_to_right = orient.isLeftToRight ();        Component my_north = north;        Component my_east = east;        Component my_south = south;        Component my_west = west;        // Note that we currently don't handle vertical layouts.  Neither        // does JDK 1.3.        if (firstLine != null)          my_north = firstLine;        if (lastLine != null)          my_south = lastLine;        if (firstItem != null)          {            if (left_to_right)              my_west = firstItem;            else              my_east = firstItem;          }        if (lastItem != null)          {            if (left_to_right)              my_east = lastItem;            else              my_west = lastItem;          }        Dimension c = calcCompSize(center, PREF);        Dimension n = calcCompSize(my_north, PREF);        Dimension s = calcCompSize(my_south, PREF);        Dimension e = calcCompSize(my_east, PREF);        Dimension w = calcCompSize(my_west, PREF);        int targetWidth = target.getWidth();        int targetHeight = target.getHeight();        /*	<-> hgap     <-> hgap	+----------------------------+          }	|t                           |          } i.top	|  +----------------------+  |  --- y1  }	|  |n                     |  |	|  +----------------------+  |          } vgap	|  +---+ +----------+ +---+  |  --- y2  }        }	|  |w  | |c         | |e  |  |                   } hh	|  +---+ +----------+ +---+  |          } vgap   }	|  +----------------------+  |  --- y3  }	|  |s                     |  |	|  +----------------------+  |          }	|                            |          } i.bottom	+----------------------------+          }	|x1   |x2          |x3	<---------------------->	<-->         ww           <-->	i.left                    i.right        */        int x1 = i.left;        int x2 = x1 + w.width + (w.width == 0 ? 0 : hgap);        int x3;        if (targetWidth <= i.right + e.width)          x3 = x2 + w.width + (w.width == 0 ? 0 : hgap);        else          x3 = targetWidth - i.right - e.width;        int ww = targetWidth - i.right - i.left;        int y1 = i.top;        int y2 = y1 + n.height + (n.height == 0 ? 0 : vgap);        int midh = Math.max(e.height, Math.max(w.height, c.height));        int y3;        if (targetHeight <= i.bottom + s.height)          y3 = y2 + midh + vgap;        else          y3 = targetHeight - i.bottom - s.height;        int hh = y3-y2-(s.height == 0 ? 0 : vgap);        setBounds(center, x2, y2, x3-x2-(w.width == 0 ? 0 : hgap), hh);        setBounds(my_north, x1, y1, ww, n.height);        setBounds(my_south, x1, y3, ww, s.height);        setBounds(my_west, x1, y2, w.width, hh);        setBounds(my_east, x3, y2, e.width, hh);      }  }  /**   * Returns a string representation of this layout manager.   *   * @return A string representation of this object.   */  public String toString()  {    return getClass().getName() + "[hgap=" + hgap + ",vgap=" + vgap + "]";  }  /**   * This is a convenience method to set the bounds on a component.   * If the indicated component is null, nothing is done.   */  private void setBounds(Component comp, int x, int y, int w, int h)  {    if (comp == null)      return;    comp.setBounds(x, y, w, h);  }  private Dimension calcCompSize(Component comp, int what)  {    if (comp == null || !comp.isVisible())      return new Dimension(0, 0);    if (what == MIN)      return comp.getMinimumSize();    else if (what == MAX)      return comp.getMaximumSize();    return comp.getPreferredSize();  }  /**   * This is a helper function used to compute the various sizes for   * this layout.   */  private Dimension calcSize(Container target, int what)  {    synchronized (target.getTreeLock ())      {        Insets ins = target.getInsets();        ComponentOrientation orient = target.getComponentOrientation ();        boolean left_to_right = orient.isLeftToRight ();        Component my_north = north;        Component my_east = east;        Component my_south = south;        Component my_west = west;        // Note that we currently don't handle vertical layouts.  Neither        // does JDK 1.3.        if (firstLine != null)          my_north = firstLine;        if (lastLine != null)          my_south = lastLine;        if (firstItem != null)          {            if (left_to_right)              my_west = firstItem;            else              my_east = firstItem;          }        if (lastItem != null)          {            if (left_to_right)              my_east = lastItem;            else              my_west = lastItem;          }        Dimension ndim = calcCompSize(my_north, what);        Dimension sdim = calcCompSize(my_south, what);        Dimension edim = calcCompSize(my_east, what);        Dimension wdim = calcCompSize(my_west, what);        Dimension cdim = calcCompSize(center, what);        int width = edim.width + cdim.width + wdim.width + (hgap * 2);        // Check for overflow.        if (width < edim.width || width < cdim.width || width < cdim.width)          width = Integer.MAX_VALUE;        if (ndim.width > width)          width = ndim.width;        if (sdim.width > width)          width = sdim.width;        width += (ins.left + ins.right);        int height = edim.height;        if (cdim.height > height)          height = cdim.height;        if (wdim.height > height)          height = wdim.height;        int addedHeight = height + (ndim.height + sdim.height + (vgap * 2)                                    + ins.top + ins.bottom);        // Check for overflow.        if (addedHeight < height)          height = Integer.MAX_VALUE;        else          height = addedHeight;        return(new Dimension(width, height));      }  }  /**   * Return the component at the indicated location, or null if no component   * is at that location.  The constraints argument must be one of the    * location constants specified by this class.      * @param constraints the location   * @return the component at that location, or null   * @throws IllegalArgumentException if the constraints argument is not    * recognized   * @since 1.5   */  public Component getLayoutComponent(Object constraints)  {    if (constraints == CENTER)      return center;    if (constraints == NORTH)      return north;    if (constraints == EAST)      return east;    if (constraints == SOUTH)      return south;    if (constraints == WEST)      return west;    if (constraints == PAGE_START)      return firstLine;    if (constraints == PAGE_END)      return lastLine;    if (constraints == LINE_START)      return firstItem;    if (constraints == LINE_END)      return lastItem;    throw new IllegalArgumentException("constraint " + constraints                                        + " is not recognized");  }  /**   * Return the component at the specified location, which must be one   * of the absolute constants such as CENTER or SOUTH.  The container's   * orientation is used to map this location to the correct corresponding   * component, so for instance in a right-to-left container, a request   * for the EAST component could return the LINE_END component.  This will   * return null if no component is available at the given location.   * @param container the container whose orientation is used   * @param constraints the absolute location of the component   * @return the component at the location, or null   * @throws IllegalArgumentException if the constraint is not recognized   */  public Component getLayoutComponent(Container container, Object constraints)  {    ComponentOrientation orient = container.getComponentOrientation();    if (constraints == CENTER)      return center;    // Note that we don't support vertical layouts.    if (constraints == NORTH)      return north;    if (constraints == SOUTH)      return south;    if (constraints == WEST)      {        // Note that relative layout takes precedence.        if (orient.isLeftToRight())          return firstItem == null ? west : firstItem;        return lastItem == null ? west : lastItem;      }    if (constraints == EAST)      {        // Note that relative layout takes precedence.        if (orient.isLeftToRight())          return lastItem == null ? east : lastItem;        return firstItem == null ? east : firstItem;      }    throw new IllegalArgumentException("constraint " + constraints                                       + " is not recognized");  }  /**   * Return the constraint corresponding to a component in this layout.   * If the component is null, or is not in this layout, returns null.   * Otherwise, this will return one of the constraint constants defined   * in this class.   * @param c the component   * @return the constraint, or null   * @since 1.5   */  public Object getConstraints(Component c)  {    if (c == null)      return null;    if (c == center)      return CENTER;    if (c == north)      return NORTH;    if (c == east)      return EAST;    if (c == south)      return SOUTH;    if (c == west)      return WEST;    if (c == firstLine)      return PAGE_START;    if (c == lastLine)      return PAGE_END;    if (c == firstItem)      return LINE_START;    if (c == lastItem)      return LINE_END;    return null;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -