2362N/A * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * A border layout lays out a container, arranging and resizing 0N/A * its components to fit in five regions: 0N/A * north, south, east, west, and center. 0N/A * Each region may contain no more than one component, and 0N/A * is identified by a corresponding constant: 0N/A * <code>NORTH</code>, <code>SOUTH</code>, <code>EAST</code>, 0N/A * <code>WEST</code>, and <code>CENTER</code>. When adding a 0N/A * component to a container with a border layout, use one of these 0N/A * five constants, for example: 0N/A * Panel p = new Panel(); 0N/A * p.setLayout(new BorderLayout()); 0N/A * p.add(new Button("Okay"), BorderLayout.SOUTH); 0N/A * As a convenience, <code>BorderLayout</code> interprets the 0N/A * absence of a string specification the same as the constant 0N/A * <code>CENTER</code>: 0N/A * Panel p2 = new Panel(); 0N/A * p2.setLayout(new BorderLayout()); 0N/A * p2.add(new TextArea()); // Same as p.add(new TextArea(), BorderLayout.CENTER); 0N/A * In addition, <code>BorderLayout</code> supports the relative 0N/A * positioning constants, <code>PAGE_START</code>, <code>PAGE_END</code>, 0N/A * <code>LINE_START</code>, and <code>LINE_END</code>. 0N/A * In a container whose <code>ComponentOrientation</code> is set to 0N/A * <code>ComponentOrientation.LEFT_TO_RIGHT</code>, these constants map to 0N/A * <code>NORTH</code>, <code>SOUTH</code>, <code>WEST</code>, and 0N/A * <code>EAST</code>, respectively. 0N/A * For compatibility with previous releases, <code>BorderLayout</code> 0N/A * also includes the relative positioning constants <code>BEFORE_FIRST_LINE</code>, 0N/A * <code>AFTER_LAST_LINE</code>, <code>BEFORE_LINE_BEGINS</code> and 0N/A * <code>AFTER_LINE_ENDS</code>. These are equivalent to 0N/A * <code>PAGE_START</code>, <code>PAGE_END</code>, <code>LINE_START</code> 0N/A * and <code>LINE_END</code> respectively. For 0N/A * consistency with the relative positioning constants used by other 0N/A * components, the latter constants are preferred. 0N/A * Mixing both absolute and relative positioning constants can lead to 0N/A * unpredicable results. If 0N/A * you use both types, the relative constants will take precedence. 0N/A * For example, if you add components using both the <code>NORTH</code> 0N/A * and <code>PAGE_START</code> constants in a container whose 0N/A * orientation is <code>LEFT_TO_RIGHT</code>, only the 0N/A * <code>PAGE_START</code> will be layed out. 0N/A * NOTE: Currently (in the Java 2 platform v1.2), 0N/A * <code>BorderLayout</code> does not support vertical 0N/A * orientations. The <code>isVertical</code> setting on the container's 0N/A * <code>ComponentOrientation</code> is not respected. 0N/A * The components are laid out according to their 0N/A * preferred sizes and the constraints of the container's size. 0N/A * The <code>NORTH</code> and <code>SOUTH</code> components may 0N/A * be stretched horizontally; the <code>EAST</code> and 0N/A * <code>WEST</code> components may be stretched vertically; 0N/A * the <code>CENTER</code> component may stretch both horizontally 0N/A * and vertically to fill any space left over. 0N/A * Here is an example of five buttons in an applet laid out using 0N/A * the <code>BorderLayout</code> layout manager: 0N/A * alt="Diagram of an applet demonstrating BorderLayout. 0N/A * Each section of the BorderLayout contains a Button corresponding to its position in the layout, one of: 0N/A * North, West, Center, East, or South." 0N/A * ALIGN=center HSPACE=10 VSPACE=7> 0N/A * The code for this applet is as follows: 0N/A * <hr><blockquote><pre> 0N/A * import java.awt.*; 0N/A * import java.applet.Applet; 0N/A * public class buttonDir extends Applet { 0N/A * public void init() { 0N/A * setLayout(new BorderLayout()); 0N/A * add(new Button("North"), BorderLayout.NORTH); 0N/A * add(new Button("South"), BorderLayout.SOUTH); 0N/A * add(new Button("East"), BorderLayout.EAST); 0N/A * add(new Button("West"), BorderLayout.WEST); 0N/A * add(new Button("Center"), BorderLayout.CENTER); 0N/A * </pre></blockquote><hr> 0N/A * @author Arthur van Hoff 0N/A * @see java.awt.Container#add(String, Component) 0N/A * @see java.awt.ComponentOrientation 0N/A * Constructs a border layout with the horizontal gaps 0N/A * between components. 0N/A * The horizontal gap is specified by <code>hgap</code>. 0N/A * @see #setHgap(int) 0N/A * Constructs a border layout with the vertical gaps 0N/A * between components. 0N/A * The vertical gap is specified by <code>vgap</code>. 0N/A * @see #setVgap(int) 0N/A * Constant to specify components location to be the 0N/A * north portion of the border layout. 0N/A * @see #getChild(String, boolean) 0N/A * @see #addLayoutComponent 0N/A * @see #getLayoutAlignmentX 0N/A * @see #getLayoutAlignmentY 0N/A * @see #removeLayoutComponent 0N/A * Constant to specify components location to be the 0N/A * west portion of the border layout. 0N/A * @see #getChild(String, boolean) 0N/A * @see #addLayoutComponent 0N/A * @see #getLayoutAlignmentX 0N/A * @see #getLayoutAlignmentY 0N/A * @see #removeLayoutComponent 0N/A * Constant to specify components location to be the 0N/A * east portion of the border layout. 0N/A * @see #getChild(String, boolean) 0N/A * @see #addLayoutComponent 0N/A * @see #getLayoutAlignmentX 0N/A * @see #getLayoutAlignmentY 0N/A * @see #removeLayoutComponent 0N/A * Constant to specify components location to be the 0N/A * south portion of the border layout. 0N/A * @see #getChild(String, boolean) 0N/A * @see #addLayoutComponent 0N/A * @see #getLayoutAlignmentX 0N/A * @see #getLayoutAlignmentY 0N/A * @see #removeLayoutComponent 0N/A * Constant to specify components location to be the 0N/A * center portion of the border layout. 0N/A * @see #getChild(String, boolean) 0N/A * @see #addLayoutComponent 0N/A * @see #getLayoutAlignmentX 0N/A * @see #getLayoutAlignmentY 0N/A * @see #removeLayoutComponent 0N/A * A relative positioning constant, that can be used instead of 0N/A * north, south, east, west or center. 0N/A * mixing the two types of constants can lead to unpredicable results. If 0N/A * you use both types, the relative constants will take precedence. 0N/A * For example, if you add components using both the <code>NORTH</code> 0N/A * and <code>BEFORE_FIRST_LINE</code> constants in a container whose 0N/A * orientation is <code>LEFT_TO_RIGHT</code>, only the 0N/A * <code>BEFORE_FIRST_LINE</code> will be layed out. 0N/A * This will be the same for lastLine, firstItem, lastItem. 0N/A * A relative positioning constant, that can be used instead of 0N/A * north, south, east, west or center. 0N/A * Please read Description for firstLine. 0N/A * A relative positioning constant, that can be used instead of 0N/A * north, south, east, west or center. 0N/A * Please read Description for firstLine. 0N/A * A relative positioning constant, that can be used instead of 0N/A * north, south, east, west or center. 0N/A * Please read Description for firstLine. 0N/A * The north layout constraint (top of container). 0N/A * The south layout constraint (bottom of container). 0N/A * The east layout constraint (right side of container). 0N/A * The west layout constraint (left side of container). 0N/A * The center layout constraint (middle of container). 0N/A * Synonym for PAGE_START. Exists for compatibility with previous 0N/A * versions. PAGE_START is preferred. 0N/A * Synonym for PAGE_END. Exists for compatibility with previous 0N/A * versions. PAGE_END is preferred. 0N/A * Synonym for LINE_START. Exists for compatibility with previous 0N/A * versions. LINE_START is preferred. 0N/A * Synonym for LINE_END. Exists for compatibility with previous 0N/A * versions. LINE_END is preferred. 0N/A * The component comes before the first line of the layout's content. 0N/A * For Western, left-to-right and top-to-bottom orientations, this is 0N/A * equivalent to NORTH. 0N/A * @see java.awt.Component#getComponentOrientation 0N/A * The component comes after the last line of the layout's content. 0N/A * For Western, left-to-right and top-to-bottom orientations, this is 0N/A * equivalent to SOUTH. 0N/A * @see java.awt.Component#getComponentOrientation 0N/A * The component goes at the beginning of the line direction for the 0N/A * layout. For Western, left-to-right and top-to-bottom orientations, 0N/A * this is equivalent to WEST. 0N/A * @see java.awt.Component#getComponentOrientation 0N/A * The component goes at the end of the line direction for the 0N/A * layout. For Western, left-to-right and top-to-bottom orientations, 0N/A * this is equivalent to EAST. 0N/A * @see java.awt.Component#getComponentOrientation 0N/A * JDK 1.1 serialVersionUID 0N/A * Constructs a new border layout with 0N/A * no gaps between components. 0N/A * Constructs a border layout with the specified gaps 0N/A * between components. 0N/A * The horizontal gap is specified by <code>hgap</code> 0N/A * and the vertical gap is specified by <code>vgap</code>. 0N/A * @param hgap the horizontal gap. 0N/A * @param vgap the vertical gap. 0N/A * Returns the horizontal gap between components. 0N/A * Sets the horizontal gap between components. 0N/A * @param hgap the horizontal gap between components 0N/A * Returns the vertical gap between components. 0N/A * Sets the vertical gap between components. 0N/A * @param vgap the vertical gap between components 0N/A * Adds the specified component to the layout, using the specified 0N/A * constraint object. For border layouts, the constraint must be 0N/A * one of the following constants: <code>NORTH</code>, 0N/A * <code>SOUTH</code>, <code>EAST</code>, 0N/A * <code>WEST</code>, or <code>CENTER</code>. 0N/A * Most applications do not call this method directly. This method 0N/A * is called when a component is added to a container using the 0N/A * <code>Container.add</code> method with the same argument types. 0N/A * @param comp the component to be added. 0N/A * @param constraints an object that specifies how and where 0N/A * the component is added to the layout. 0N/A * @see java.awt.Container#add(java.awt.Component, java.lang.Object) 0N/A * @exception IllegalArgumentException if the constraint object is not 0N/A * a string, or if it not one of the five specified 0N/A * @deprecated replaced by <code>addLayoutComponent(Component, Object)</code>. 0N/A /* Special case: treat null the same as "Center". */ 0N/A /* Assign the component to one of the known regions of the layout. 0N/A * Removes the specified component from this border layout. This 0N/A * method is called when a container calls its <code>remove</code> or 0N/A * <code>removeAll</code> methods. Most applications do not call this 0N/A * @param comp the component to be removed. 0N/A * @see java.awt.Container#remove(java.awt.Component) 0N/A * @see java.awt.Container#removeAll() 0N/A * Gets the component that was added using the given constraint 0N/A * @param constraints the desired constraint, one of <code>CENTER</code>, 0N/A * <code>NORTH</code>, <code>SOUTH</code>, 0N/A * <code>WEST</code>, <code>EAST</code>, 0N/A * <code>PAGE_START</code>, <code>PAGE_END</code>, 0N/A * <code>LINE_START</code>, <code>LINE_END</code> 0N/A * @return the component at the given location, or <code>null</code> if 0N/A * the location is empty 0N/A * @exception IllegalArgumentException if the constraint object is 0N/A * not one of the nine specified constants 0N/A * @see #addLayoutComponent(java.awt.Component, java.lang.Object) 0N/A * Returns the component that corresponds to the given constraint location 0N/A * based on the target <code>Container</code>'s component orientation. 0N/A * Components added with the relative constraints <code>PAGE_START</code>, 0N/A * <code>PAGE_END</code>, <code>LINE_START</code>, and <code>LINE_END</code> 0N/A * take precedence over components added with the explicit constraints 0N/A * <code>NORTH</code>, <code>SOUTH</code>, <code>WEST</code>, and <code>EAST</code>. 0N/A * The <code>Container</code>'s component orientation is used to determine the location of components 0N/A * added with <code>LINE_START</code> and <code>LINE_END</code>. 0N/A * @param constraints the desired absolute position, one of <code>CENTER</code>, 0N/A * <code>NORTH</code>, <code>SOUTH</code>, 0N/A * <code>EAST</code>, <code>WEST</code> 0N/A * @param target the {@code Container} used to obtain 0N/A * the constraint location based on the target 0N/A * {@code Container}'s component orientation. 0N/A * @return the component at the given location, or <code>null</code> if 0N/A * the location is empty 0N/A * @exception IllegalArgumentException if the constraint object is 0N/A * not one of the five specified constants 0N/A * @exception NullPointerException if the target parameter is null 0N/A * @see #addLayoutComponent(java.awt.Component, java.lang.Object) 0N/A * Gets the constraints for the specified component 0N/A * @param comp the component to be queried 0N/A * @return the constraint for the specified component, 0N/A * or null if component is null or is not present 0N/A * @see #addLayoutComponent(java.awt.Component, java.lang.Object) 0N/A //fix for 6242148 : API method java.awt.BorderLayout.getConstraints(null) should return null 0N/A * Determines the minimum size of the <code>target</code> container 0N/A * using this layout manager. 0N/A * This method is called when a container calls its 0N/A * <code>getMinimumSize</code> method. Most applications do not call 0N/A * this method directly. 0N/A * @param target the container in which to do the layout. 0N/A * @return the minimum dimensions needed to lay out the subcomponents 0N/A * of the specified container. 0N/A * @see java.awt.Container 0N/A * @see java.awt.BorderLayout#preferredLayoutSize 0N/A * @see java.awt.Container#getMinimumSize() 0N/A * Determines the preferred size of the <code>target</code> 0N/A * container using this layout manager, based on the components 0N/A * Most applications do not call this method directly. This method 0N/A * is called when a container calls its <code>getPreferredSize</code> 0N/A * @param target the container in which to do the layout. 0N/A * @return the preferred dimensions to lay out the subcomponents 0N/A * of the specified container. 0N/A * @see java.awt.Container 0N/A * @see java.awt.BorderLayout#minimumLayoutSize 0N/A * @see java.awt.Container#getPreferredSize() 0N/A * Returns the maximum dimensions for this layout given the components 0N/A * in the specified target container. 0N/A * @param target the component which needs to be laid out 0N/A * @see #minimumLayoutSize 0N/A * @see #preferredLayoutSize 0N/A * Returns the alignment along the x axis. This specifies how 0N/A * the component would like to be aligned relative to other 0N/A * components. The value should be a number between 0 and 1 0N/A * where 0 represents alignment along the origin, 1 is aligned 0N/A * the furthest away from the origin, 0.5 is centered, etc. 0N/A * Returns the alignment along the y axis. This specifies how 0N/A * the component would like to be aligned relative to other 0N/A * components. The value should be a number between 0 and 1 0N/A * where 0 represents alignment along the origin, 1 is aligned 0N/A * the furthest away from the origin, 0.5 is centered, etc. 0N/A * Invalidates the layout, indicating that if the layout manager 0N/A * has cached information it should be discarded. 0N/A * Lays out the container argument using this border layout. 0N/A * This method actually reshapes the components in the specified 0N/A * container in order to satisfy the constraints of this 0N/A * <code>BorderLayout</code> object. The <code>NORTH</code> 0N/A * and <code>SOUTH</code> components, if any, are placed at 0N/A * the top and bottom of the container, respectively. The 0N/A * <code>WEST</code> and <code>EAST</code> components are 0N/A * then placed on the left and right, respectively. Finally, 0N/A * the <code>CENTER</code> object is placed in any remaining 0N/A * space in the middle. 0N/A * Most applications do not call this method directly. This method 0N/A * is called when a container calls its <code>doLayout</code> method. 0N/A * @param target the container in which to do the layout. 0N/A * @see java.awt.Container 0N/A * @see java.awt.Container#doLayout() 0N/A * Get the component that corresponds to the given constraint location 0N/A * @param key The desired absolute position, 0N/A * either NORTH, SOUTH, EAST, or WEST. 0N/A * @param ltr Is the component line direction left-to-right? 0N/A * Returns a string representation of the state of this border layout. 0N/A * @return a string representation of this border layout.