📄 absolutelayout.java
字号:
//$Id: AbsoluteLayout.java,v 1.2 2000/10/28 16:55:18 daniela Exp $//from the NetBeans redist directorypackage org.ozoneDB.core;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.2 $) * @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 + -