Home » openjdk-7 » java » awt » [javadoc | source]

    1   /*
    2    * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Oracle designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Oracle in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   22    * or visit www.oracle.com if you need additional information or have any
   23    * questions.
   24    */
   25   
   26   package java.awt;
   27   
   28   import java.awt.geom.Dimension2D;
   29   import java.beans.Transient;
   30   
   31   /**
   32    * The <code>Dimension</code> class encapsulates the width and
   33    * height of a component (in integer precision) in a single object.
   34    * The class is
   35    * associated with certain properties of components. Several methods
   36    * defined by the <code>Component</code> class and the
   37    * <code>LayoutManager</code> interface return a
   38    * <code>Dimension</code> object.
   39    * <p>
   40    * Normally the values of <code>width</code>
   41    * and <code>height</code> are non-negative integers.
   42    * The constructors that allow you to create a dimension do
   43    * not prevent you from setting a negative value for these properties.
   44    * If the value of <code>width</code> or <code>height</code> is
   45    * negative, the behavior of some methods defined by other objects is
   46    * undefined.
   47    *
   48    * @author      Sami Shaio
   49    * @author      Arthur van Hoff
   50    * @see         java.awt.Component
   51    * @see         java.awt.LayoutManager
   52    * @since       1.0
   53    */
   54   public class Dimension extends Dimension2D implements java.io.Serializable {
   55   
   56       /**
   57        * The width dimension; negative values can be used.
   58        *
   59        * @serial
   60        * @see #getSize
   61        * @see #setSize
   62        * @since 1.0
   63        */
   64       public int width;
   65   
   66       /**
   67        * The height dimension; negative values can be used.
   68        *
   69        * @serial
   70        * @see #getSize
   71        * @see #setSize
   72        * @since 1.0
   73        */
   74       public int height;
   75   
   76       /*
   77        * JDK 1.1 serialVersionUID
   78        */
   79        private static final long serialVersionUID = 4723952579491349524L;
   80   
   81       /**
   82        * Initialize JNI field and method IDs
   83        */
   84       private static native void initIDs();
   85   
   86       static {
   87           /* ensure that the necessary native libraries are loaded */
   88           Toolkit.loadLibraries();
   89           if (!GraphicsEnvironment.isHeadless()) {
   90               initIDs();
   91           }
   92       }
   93   
   94       /**
   95        * Creates an instance of <code>Dimension</code> with a width
   96        * of zero and a height of zero.
   97        */
   98       public Dimension() {
   99           this(0, 0);
  100       }
  101   
  102       /**
  103        * Creates an instance of <code>Dimension</code> whose width
  104        * and height are the same as for the specified dimension.
  105        *
  106        * @param    d   the specified dimension for the
  107        *               <code>width</code> and
  108        *               <code>height</code> values
  109        */
  110       public Dimension(Dimension d) {
  111           this(d.width, d.height);
  112       }
  113   
  114       /**
  115        * Constructs a <code>Dimension</code> and initializes
  116        * it to the specified width and specified height.
  117        *
  118        * @param width the specified width
  119        * @param height the specified height
  120        */
  121       public Dimension(int width, int height) {
  122           this.width = width;
  123           this.height = height;
  124       }
  125   
  126       /**
  127        * {@inheritDoc}
  128        * @since 1.2
  129        */
  130       public double getWidth() {
  131           return width;
  132       }
  133   
  134       /**
  135        * {@inheritDoc}
  136        * @since 1.2
  137        */
  138       public double getHeight() {
  139           return height;
  140       }
  141   
  142       /**
  143        * Sets the size of this <code>Dimension</code> object to
  144        * the specified width and height in double precision.
  145        * Note that if <code>width</code> or <code>height</code>
  146        * are larger than <code>Integer.MAX_VALUE</code>, they will
  147        * be reset to <code>Integer.MAX_VALUE</code>.
  148        *
  149        * @param width  the new width for the <code>Dimension</code> object
  150        * @param height the new height for the <code>Dimension</code> object
  151        * @since 1.2
  152        */
  153       public void setSize(double width, double height) {
  154           this.width = (int) Math.ceil(width);
  155           this.height = (int) Math.ceil(height);
  156       }
  157   
  158       /**
  159        * Gets the size of this <code>Dimension</code> object.
  160        * This method is included for completeness, to parallel the
  161        * <code>getSize</code> method defined by <code>Component</code>.
  162        *
  163        * @return   the size of this dimension, a new instance of
  164        *           <code>Dimension</code> with the same width and height
  165        * @see      java.awt.Dimension#setSize
  166        * @see      java.awt.Component#getSize
  167        * @since    1.1
  168        */
  169       @Transient
  170       public Dimension getSize() {
  171           return new Dimension(width, height);
  172       }
  173   
  174       /**
  175        * Sets the size of this <code>Dimension</code> object to the specified size.
  176        * This method is included for completeness, to parallel the
  177        * <code>setSize</code> method defined by <code>Component</code>.
  178        * @param    d  the new size for this <code>Dimension</code> object
  179        * @see      java.awt.Dimension#getSize
  180        * @see      java.awt.Component#setSize
  181        * @since    1.1
  182        */
  183       public void setSize(Dimension d) {
  184           setSize(d.width, d.height);
  185       }
  186   
  187       /**
  188        * Sets the size of this <code>Dimension</code> object
  189        * to the specified width and height.
  190        * This method is included for completeness, to parallel the
  191        * <code>setSize</code> method defined by <code>Component</code>.
  192        *
  193        * @param    width   the new width for this <code>Dimension</code> object
  194        * @param    height  the new height for this <code>Dimension</code> object
  195        * @see      java.awt.Dimension#getSize
  196        * @see      java.awt.Component#setSize
  197        * @since    1.1
  198        */
  199       public void setSize(int width, int height) {
  200           this.width = width;
  201           this.height = height;
  202       }
  203   
  204       /**
  205        * Checks whether two dimension objects have equal values.
  206        */
  207       public boolean equals(Object obj) {
  208           if (obj instanceof Dimension) {
  209               Dimension d = (Dimension)obj;
  210               return (width == d.width) && (height == d.height);
  211           }
  212           return false;
  213       }
  214   
  215       /**
  216        * Returns the hash code for this <code>Dimension</code>.
  217        *
  218        * @return    a hash code for this <code>Dimension</code>
  219        */
  220       public int hashCode() {
  221           int sum = width + height;
  222           return sum * (sum + 1)/2 + width;
  223       }
  224   
  225       /**
  226        * Returns a string representation of the values of this
  227        * <code>Dimension</code> object's <code>height</code> and
  228        * <code>width</code> fields. This method is intended to be used only
  229        * for debugging purposes, and the content and format of the returned
  230        * string may vary between implementations. The returned string may be
  231        * empty but may not be <code>null</code>.
  232        *
  233        * @return  a string representation of this <code>Dimension</code>
  234        *          object
  235        */
  236       public String toString() {
  237           return getClass().getName() + "[width=" + width + ",height=" + height + "]";
  238       }
  239   }

Home » openjdk-7 » java » awt » [javadoc | source]