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

📄 absolutelayout.java

📁 Java的面向对象数据库系统的源代码
💻 JAVA
字号:
//$Id: AbsoluteLayout.java,v 1.3 2002/08/27 08:32:26 per_nyfelt Exp $
//from the NetBeans redist directory

package org.ozoneDB.core.monitor;

import java.awt.*;

/**
 * AbsoluteLayout is a LayoutManager that works as a replacement
 * for "null" layout to allow placement of components in absolute
 * positions.
 *
 *
 * @version 1.01, Aug 19, 1998 ($Revision: 1.3 $)
 * @author  Ian Formanek (modified softwarebuero m&b
 */
public class AbsoluteLayout implements LayoutManager2, java.io.Serializable {

    /** A mapping <Component, AbsoluteConstraints> */
    protected java.util.Hashtable constraints = new java.util.Hashtable();

    /** urspruengliche groesse des umgebenden containers*/
    public Dimension bounds;

    /** generated Serialized Version UID */
    final static long serialVersionUID = -1919857869177070440L;


    /**
     * Adds the specified component with the specified name to
     * the layout.
     * @param name the component name
     * @param comp the component to be added
     */
    public void addLayoutComponent( String name, Component comp ) {
        throw new IllegalArgumentException();
    }


    /**
     * Removes the specified component from the layout.
     * @param comp the component to be removed
     */
    public void removeLayoutComponent( Component comp ) {
        constraints.remove( comp );
    }


    /**
     * Calculates the preferred dimension for the specified
     * panel given the components in the specified parent container.
     * @param parent the component to be laid out
     *
     * @see #minimumLayoutSize
     */
    public Dimension preferredLayoutSize( Container parent ) {
        int maxWidth = 0;
        int maxHeight = 0;
        for (java.util.Enumeration e = constraints.keys(); e.hasMoreElements();) {
            Component comp = (Component)e.nextElement();
            AbsoluteConstraints ac = (AbsoluteConstraints)constraints.get( comp );
            Dimension size = comp.getPreferredSize();

            int width = ac.getWidth() == -1 ? size.width : ac.getWidth();
            int height = ac.getHeight() == -1 ? size.height : ac.getHeight();

            if (ac.x + width > maxWidth) {
                maxWidth = ac.x + width;
            }
            if (ac.y + height > maxHeight) {
                maxHeight = ac.y + height;
            }
        }
        return new Dimension( maxWidth, maxHeight );
    }


    /**
     * Calculates the minimum dimension for the specified
     * panel given the components in the specified parent container.
     * @param parent the component to be laid out
     * @see #preferredLayoutSize
     */
    public Dimension minimumLayoutSize( Container parent ) {
        int maxWidth = 0;
        int maxHeight = 0;
        for (java.util.Enumeration e = constraints.keys(); e.hasMoreElements();) {
            Component comp = (Component)e.nextElement();
            AbsoluteConstraints ac = (AbsoluteConstraints)constraints.get( comp );

            Dimension size = comp.getMinimumSize();

            int width = ac.getWidth() == -1 ? size.width : ac.getWidth();
            int height = ac.getHeight() == -1 ? size.height : ac.getHeight();

            if (ac.x + width > maxWidth) {
                maxWidth = ac.x + width;
            }
            if (ac.y + height > maxHeight) {
                maxHeight = ac.y + height;
            }
        }
        return new Dimension( maxWidth, maxHeight );
    }


    /**
     * Sets the original size of the parent container. Needs not
     * to be called in any case.
     */
    public void realizeSize( Dimension bounds ) {
        bounds = new Dimension( bounds );
    }


    /**
     * Lays out the container in the specified panel.
     * @param parent the component which needs to be laid out
     */
    public void layoutContainer( Container parent ) {
        Dimension parentSize = parent.getSize();
        if (bounds == null) {
            bounds = new Dimension( parentSize );
        }

        for (java.util.Enumeration e = constraints.keys(); e.hasMoreElements();) {
            Component comp = (Component)e.nextElement();
            AbsoluteConstraints ac = (AbsoluteConstraints)constraints.get( comp );
            Dimension size = comp.getPreferredSize();

            int x = ac.x;
            int y = ac.y;
            int width = ac.getWidth() == -1 ? size.width : ac.getWidth();
            int height = ac.getHeight() == -1 ? size.height : ac.getHeight();

            if ((ac.policy & AbsoluteConstraints.X_PROP) != 0) {
                x = (int)((double)ac.x / (double)bounds.width * (double)parentSize.width);
            }
            if ((ac.policy & AbsoluteConstraints.Y_PROP) != 0) {
                y = (int)((double)ac.y / (double)bounds.height * (double)parentSize.height);
            }
            if ((ac.policy & AbsoluteConstraints.X_ABS) != 0) {
                x = (parentSize.width - (bounds.width - ac.x));
            }
            if ((ac.policy & AbsoluteConstraints.Y_ABS) != 0) {
                y = (parentSize.height - (bounds.height - ac.y));
            }

            if ((ac.policy & AbsoluteConstraints.X2_PROP) != 0) {
                width = ((int)((double)(ac.x + width) / (double)bounds.width * (double)parentSize.width) - x);
            }
            if ((ac.policy & AbsoluteConstraints.Y2_PROP) != 0) {
                height = ((int)((double)(ac.y + height) / (double)bounds.height * (double)parentSize.height) - y);
            }
            if ((ac.policy & AbsoluteConstraints.X2_ABS) != 0) {
                int x2 = bounds.width - ac.x + width;
                width = (parentSize.width - x - x2);
            }
            if ((ac.policy & AbsoluteConstraints.Y2_ABS) != 0) {
                int y2 = bounds.height - ac.y + height;
                height = (parentSize.height - y - y2);
            }

            comp.setBounds( x, y, width, height );
        }
    }


    /**
     * Adds the specified component to the layout, using the specified
     * constraint object.
     * @param comp the component to be added
     * @param constr  where/how the component is added to the layout.
     */
    public void addLayoutComponent( Component comp, Object constr ) {
        if (!(constr instanceof AbsoluteConstraints)) {
            throw new IllegalArgumentException();
        }
        constraints.put( comp, constr );
    }


    /**
     * Returns the maximum size of this component.
     * @see java.awt.Component#getMinimumSize()
     * @see java.awt.Component#getPreferredSize()
     * @see LayoutManager
     */
    public Dimension maximumLayoutSize( Container target ) {
        return new Dimension( Integer.MAX_VALUE, Integer.MAX_VALUE );
    }


    /**
     * Returns the alignment along the x axis.  This specifies how
     * the component would like to be aligned relative to other
     * components.  The value should be a number between 0 and 1
     * where 0 represents alignment along the origin, 1 is aligned
     * the furthest away from the origin, 0.5 is centered, etc.
     */
    public float getLayoutAlignmentX( Container target ) {
        return 0;
    }


    /**
     * Returns the alignment along the y axis.  This specifies how
     * the component would like to be aligned relative to other
     * components.  The value should be a number between 0 and 1
     * where 0 represents alignment along the origin, 1 is aligned
     * the furthest away from the origin, 0.5 is centered, etc.
     */
    public float getLayoutAlignmentY( Container target ) {
        return 0;
    }


    /**
     * Invalidates the layout, indicating that if the layout manager
     * has cached information it should be discarded.
     */
    public void invalidateLayout( Container target ) {
    }
}

⌨️ 快捷键说明

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