Module java.desktop
Package java.awt

Class Rectangle

所有已实现的接口:
Shape, Serializable, Cloneable
直接已知的子类:
DefaultCaret

public class Rectangle extends Rectangle2D implements Shape, Serializable
一个Rectangle指定了一个坐标空间中由Rectangle对象的左上角点(x,y)、宽度和高度围起来的区域。

Rectangle对象的widthheightpublic字段。创建Rectangle的构造函数和可以修改一个Rectangle的方法不会阻止为宽度或高度设置负值。

一个Rectangle的宽度或高度恰好为零时,沿着这些轴的位置具有零维度,但在其他方面被视为空。对于这样的RectangleisEmpty()方法将返回true。如果任一维度为零,则测试空Rectangle是否包含或与点或矩形相交的方法将始终返回false。将这样的Rectangle与点或矩形组合的方法将包括Rectangle在结果中的位置,就好像调用add(Point)方法一样。

一个Rectangle的宽度或高度为负时,在这些轴上既没有位置也没有维度。这样的Rectangle在这些轴上被视为不存在。这样的Rectangle在包含计算和测试它是否包含或与点或矩形相交的方法方面也为空。将这样的Rectangle与点或矩形组合的方法将完全忽略Rectangle以生成结果。如果组合两个具有负维度的Rectangle对象,则结果将至少有一个负维度。

只影响Rectangle位置的方法将在其位置上操作,而不管它在任一轴上是否具有负值或零维度。

请注意,使用默认无参构造函数构造的Rectangle将具有0x0的尺寸,因此为空。该Rectangle仍将具有(0,0)的位置,并将该位置贡献给联合和添加操作。因此,试图累积一组点的边界的代码应该最初使用具有明确负宽度和高度的Rectangle进行构造,或者应该使用集合中的第一个点来构造Rectangle。例如:


     Rectangle bounds = new Rectangle(0, 0, -1, -1);
     for (int i = 0; i < points.length; i++) {
         bounds.add(points[i]);
     }
 
或者如果我们知道点数组至少包含一个点:

     Rectangle bounds = new Rectangle(points[0]);
     for (int i = 1; i < points.length; i++) {
         bounds.add(points[i]);
     }
 

该类使用32位整数来存储其位置和尺寸。通常操作可能会产生超出32位整数范围的结果。这些方法将以一种避免任何32位溢出的方式计算它们的结果,然后选择最佳表示来将最终结果存储回保存位置和尺寸的32位字段中。结果的位置将被存储到最接近32位值的xy字段中。存储到widthheight尺寸字段中的值将被选择为尽可能包含真实结果最大部分的32位值。通常这意味着维度将独立于32位整数范围进行裁剪,除非位置必须移动以将其存储到其一对32位字段中,然后相对于位置的“最佳表示”调整尺寸。如果真实结果具有负维度,因此在一个或两个轴上不存在,则存储的尺寸将在这些轴上是负数。如果真实结果的位置可以在32位整数范围内表示,但在一个或两个轴上具有零维度,则存储的尺寸将在这些轴上是零。

自从:
1.0
参见:
  • Field Details

  • Constructor Details

    • Rectangle

      public Rectangle()
      构造一个新的Rectangle,其左上角在坐标空间中为(0,0),宽度和高度均为零。
    • Rectangle

      public Rectangle(Rectangle r)
      构造一个新的Rectangle,初始化为与指定Rectangle的值相匹配。
      参数:
      r - 从中复制初始值以构造新的RectangleRectangle
      自:
      1.1
    • Rectangle

      public Rectangle(int x, int y, int width, int height)
      构造一个新的Rectangle,其左上角由参数(x,y)指定,宽度和高度由相同名称的参数指定。
      参数:
      x - 指定的X坐标
      y - 指定的Y坐标
      width - Rectangle的宽度
      height - Rectangle的高度
      自:
      1.0
    • Rectangle

      public Rectangle(int width, int height)
      构造一个新的Rectangle,其左上角在坐标空间中为(0,0),宽度和高度由相同名称的参数指定。
      参数:
      width - Rectangle的宽度
      height - Rectangle的高度
    • Rectangle

      public Rectangle(Point p, Dimension d)
      构造一个新的Rectangle,其左上角由Point参数指定,宽度和高度由Dimension参数指定。
      参数:
      p - 是Rectangle的左上角的Point
      d - 一个Dimension,表示Rectangle的宽度和高度
    • Rectangle

      public Rectangle(Point p)
      构造一个新的Rectangle,其左上角由指定的Point指定,宽度和高度均为零。
      参数:
      p - 是Rectangle的左上角
    • Rectangle

      public Rectangle(Dimension d)
      构造一个新的Rectangle,其左上角为(0,0),宽度和高度由Dimension参数指定。
      参数:
      d - 一个Dimension,指定宽度和高度
  • Method Details

    • getX

      public double getX()
      double精度返回边界Rectangle的X坐标。
      指定者:
      getX 在类 RectangularShape
      返回:
      边界Rectangle的X坐标。
    • getY

      public double getY()
      double精度返回边界Rectangle的Y坐标。
      指定者:
      getY 在类 RectangularShape
      返回:
      边界Rectangle的Y坐标。
    • getWidth

      public double getWidth()
      double精度返回边界Rectangle的宽度。
      指定者:
      getWidth 在类 RectangularShape
      返回:
      边界Rectangle的宽度。
    • getHeight

      public double getHeight()
      double精度返回边界Rectangle的高度。
      指定者:
      getHeight 在类 RectangularShape
      返回:
      边界Rectangle的高度。
    • getBounds

      public Rectangle getBounds()
      获取此Rectangle的边界Rectangle

      此方法包含是为了完整性,以与ComponentgetBounds方法相对应。

      指定者:
      getBounds 在接口 Shape
      覆盖:
      getBounds 在类 RectangularShape
      返回:
      一个新的Rectangle,等于此Rectangle的边界Rectangle
      自:
      1.1
      另请参见:
    • getBounds2D

      public Rectangle2D getBounds2D()
      返回Shape的边界框的高精度和更准确的边界框,比getBounds方法更准确。请注意,不能保证返回的Rectangle2D是包围Shape的最小边界框,只能保证Shape完全位于指定的Rectangle2D内。此方法返回的边界框通常比getBounds方法返回的边界框更紧凑,并且永远不会因溢出问题而失败,因为返回值可以是使用双精度值存储尺寸的Rectangle2D的实例。

      请注意,内部定义可能导致shape的定义轮廓上的点可能不被认为包含在返回的bounds对象中,但只有在这些点也不被认为包含在原始shape中的情况下才是如此。

      如果一个point根据contains(point)方法在shape内部,那么根据boundscontains(point)方法,它必须在返回的Rectangle2D边界对象内部。具体来说:

      shape.contains(p)要求bounds.contains(p)

      如果一个point不在shape内部,则它仍然可能包含在bounds对象中:

      bounds.contains(p)不意味着shape.contains(p)

      指定者:
      getBounds2D 在接口 Shape
      覆盖:
      getBounds2D 在类 Rectangle2D
      返回:
      一个Rectangle2D的实例,是Shape的高精度边界框。
      自:
      1.2
      另请参见:
    • setBounds

      public void setBounds(Rectangle r)
      将此Rectangle的边界Rectangle设置为与指定Rectangle相匹配。

      此方法包含是为了完整性,以与ComponentsetBounds方法相对应。

      参数:
      r - 指定的Rectangle
      自:
      1.1
      另请参见:
    • setBounds

      public void setBounds(int x, int y, int width, int height)
      将此Rectangle的边界Rectangle设置为指定的xywidthheight

      此方法包含是为了完整性,以与ComponentsetBounds方法相对应。

      参数:
      x - 此Rectangle左上角的新X坐标
      y - 此Rectangle左上角的新Y坐标
      width - 此Rectangle的新宽度
      height - 此Rectangle的新高度
      自版本:
      1.1
      参见:
    • setRect

      public void setRect(double x, double y, double width, double height)
      将此Rectangle的边界设置为包围指定xywidthheight的整数边界。如果参数指定的Rectangle超出整数的最大范围,则结果将是指定的Rectangle与最大整数边界的最佳表示。
      指定者:
      setRect 在类 Rectangle2D
      参数:
      x - 指定矩形左上角的X坐标
      y - 指定矩形左上角的Y坐标
      width - 指定矩形的宽度
      height - 指定矩形的新高度
    • reshape

      @Deprecated public void reshape(int x, int y, int width, int height)
      Deprecated.
      As of JDK version 1.1, replaced by setBounds(int, int, int, int).
      将此Rectangle的边界设置为指定的xywidthheight
      参数:
      x - 此Rectangle左上角的新X坐标
      y - 此Rectangle左上角的新Y坐标
      width - 此Rectangle的新宽度
      height - 此Rectangle的新高度
    • getLocation

      public Point getLocation()
      返回此Rectangle的位置。

      此方法是为了完整性而包含的,以与ComponentgetLocation方法相对应。

      返回:
      是此Rectangle左上角的Point
      自版本:
      1.1
      参见:
    • setLocation

      public void setLocation(Point p)
      将此Rectangle移动到指定位置。

      此方法是为了完整性而包含的,以与ComponentsetLocation方法相对应。

      参数:
      p - 指定此Rectangle的新位置的Point
      自版本:
      1.1
      参见:
    • setLocation

      public void setLocation(int x, int y)
      将此Rectangle移动到指定位置。

      此方法是为了完整性而包含的,以与ComponentsetLocation方法相对应。

      参数:
      x - 新位置的X坐标
      y - 新位置的Y坐标
      自版本:
      1.1
      参见:
    • move

      @Deprecated public void move(int x, int y)
      Deprecated.
      As of JDK version 1.1, replaced by setLocation(int, int).
      将此Rectangle移动到指定位置。
      参数:
      x - 新位置的X坐标
      y - 新位置的Y坐标
    • translate

      public void translate(int dx, int dy)
      将此Rectangle沿X坐标轴向右移动,沿Y坐标轴向下移动指定距离。
      参数:
      dx - 沿X轴移动此Rectangle的距离
      dy - 沿Y轴移动此Rectangle的距离
      参见:
    • getSize

      public Dimension getSize()
      获取此Rectangle的大小,返回表示Dimension的对象。

      此方法是为了完整性而包含的,以与ComponentgetSize方法相对应。

      返回:
      一个Dimension,表示此Rectangle的大小。
      自版本:
      1.1
      参见:
    • setSize

      public void setSize(Dimension d)
      将此Rectangle的大小设置为与指定Dimension相匹配。

      此方法是为了完整性而包含的,以与ComponentsetSize方法相对应。

      参数:
      d - Dimension对象的新大小
      自版本:
      1.1
      参见:
    • setSize

      public void setSize(int width, int height)
      将此Rectangle的大小设置为指定的宽度和高度。

      此方法是为了完整性而包含的,以与ComponentsetSize方法相对应。

      参数:
      width - 此Rectangle的新宽度
      height - 此Rectangle的新高度
      自版本:
      1.1
      参见:
    • resize

      @Deprecated public void resize(int width, int height)
      Deprecated.
      As of JDK version 1.1, replaced by setSize(int, int).
      将此Rectangle的大小设置为指定的宽度和高度。
      参数:
      width - 此Rectangle的新宽度
      height - 此Rectangle的新高度
    • contains

      public boolean contains(Point p)
      检查此Rectangle是否包含指定的Point
      参数:
      p - 要测试的Point
      返回:
      如果指定的Point在此Rectangle内部,则返回true;否则返回false
      自版本:
      1.1
    • contains

      public boolean contains(int x, int y)
      检查此Rectangle是否包含指定位置(x,y)的点。
      参数:
      x - 指定的X坐标
      y - 指定的Y坐标
      返回:
      如果点(x,y)在此Rectangle内部,则返回true;否则返回false
      自版本:
      1.1
    • contains

      public boolean contains(Rectangle r)
      检查此Rectangle是否完全包含指定的Rectangle
      参数:
      r - 指定的Rectangle
      返回:
      如果Rectangle完全包含在此Rectangle内部,则返回true;否则返回false
      自版本:
      1.2
    • contains

      public boolean contains(int X, int Y, int W, int H)
      检查此Rectangle是否完全包含指定位置(X,Y)和指定尺寸(W,H)Rectangle
      参数:
      X - 指定的X坐标
      Y - 指定的Y坐标
      W - Rectangle的宽度
      H - Rectangle的高度
      返回:
      如果由(X, Y, W, H)指定的Rectangle完全包含在此Rectangle内部,则返回true;否则返回false
      自版本:
      1.1
    • inside

      @Deprecated public boolean inside(int X, int Y)
      Deprecated.
      As of JDK version 1.1, replaced by contains(int, int).
      检查此Rectangle是否包含指定位置(X,Y)的点。
      参数:
      X - 指定的X坐标
      Y - 指定的Y坐标
      返回:
      如果点(X,Y)在此Rectangle内部,则返回true;否则返回false
    • intersects

      public boolean intersects(Rectangle r)
      确定此Rectangle和指定的Rectangle是否相交。如果两个矩形相交,则它们的交集不为空。
      参数:
      r - 指定的Rectangle
      返回:
      如果指定的Rectangle和此Rectangle相交,则返回true;否则返回false
    • intersection

      public Rectangle intersection(Rectangle r)
      计算此Rectangle与指定Rectangle的交集。返回表示两个矩形交集的新Rectangle。如果两个矩形不相交,则结果将是一个空矩形。
      参数:
      r - 指定的Rectangle
      返回:
      包含在指定Rectangle和此Rectangle中的最大Rectangle;如果矩形不相交,则为空矩形。
    • union

      public Rectangle union(Rectangle r)
      计算此Rectangle与指定Rectangle的并集。返回一个新的Rectangle,表示两个矩形的并集。

      如果任一Rectangle的任何维度小于零,则适用于不存在矩形的规则。如果只有一个维度小于零,则结果将是另一个Rectangle的副本。如果两者的维度都小于零,则结果将至少有一个维度小于零。

      如果结果的Rectangle在某个维度上太大而无法表示为int,则该维度上的结果将为Integer.MAX_VALUE

      参数:
      r - 指定的Rectangle
      返回:
      包含指定Rectangle和此Rectangle的最小Rectangle
    • add

      public void add(int newx, int newy)
      将由整数参数newx,newy指定的点添加到此Rectangle的边界。

      如果此Rectangle的任何维度小于零,则适用于不存在矩形的规则。在这种情况下,此Rectangle的新边界将具有位置等于指定坐标的位置,宽度和高度等于零。

      添加点后,使用添加的点作为参数调用contains方法不一定会返回true。对于位于Rectangle的右侧或底部边缘的点,contains方法不会返回true。因此,如果添加的点落在扩大的Rectangle的右侧或底部边缘上,则contains对该点返回false。如果指定的点必须包含在新的Rectangle中,则应添加一个1x1的矩形代替:

           r.add(new Rectangle(newx, newy, 1, 1));
       
      参数:
      newx - 新点的X坐标
      newy - 新点的Y坐标
    • add

      public void add(Point pt)
      将指定的Point添加到此Rectangle的边界。

      如果此Rectangle的任何维度小于零,则适用于不存在矩形的规则。在这种情况下,此Rectangle的新边界将具有位置等于指定Point的坐标的位置,宽度和高度等于零。

      添加Point后,使用添加的Point作为参数调用contains方法不一定会返回true。对于位于Rectangle的右侧或底部边缘的点,contains方法不会返回true。因此,如果添加的Point落在扩大的Rectangle的右侧或底部边缘上,则contains对该Point返回false。如果指定的点必须包含在新的Rectangle中,则应添加一个1x1的矩形代替:

           r.add(new Rectangle(pt, new Dimension(1, 1)));
       
      参数:
      pt - 要添加到此Rectangle的新Point
    • add

      public void add(Rectangle r)
      将一个Rectangle添加到此Rectangle。结果的Rectangle是两个矩形的并集。

      如果任一Rectangle的任何维度小于0,则结果将具有另一个Rectangle的维度。如果两个Rectangle都至少有一个维度小于0,则结果将至少有一个维度小于0。

      如果任一Rectangle的一个或两个维度等于0,则沿着这些轴具有0维度的结果将等同于将相应的原点坐标添加到该轴上的结果矩形,类似于add(Point)方法的操作,但不会在此之外再增加维度。

      如果结果的Rectangle在某个维度上太大而无法表示为int,则该维度上的结果将为Integer.MAX_VALUE

      参数:
      r - 指定的Rectangle
    • grow

      public void grow(int h, int v)
      水平和垂直同时调整Rectangle的大小。

      此方法修改Rectangle,使其在左侧和右侧各增加h个单位,在顶部和底部各增加v个单位。

      新的Rectangle的左上角为(x - h, y - v),宽度为(width + 2h),高度为(height + 2v)

      如果为hv提供了负值,则Rectangle的大小相应减小。grow方法将检查整数溢出和下溢,但不会检查widthheight的结果值是否从负值增长到非负值或从非负值缩小到负值。

      参数:
      h - 水平扩展
      v - 垂直扩展
    • isEmpty

      public boolean isEmpty()
      确定RectangularShape是否为空。当RectangularShape为空时,它不包含任何区域。
      指定者:
      isEmpty 在类 RectangularShape
      返回:
      如果RectangularShape为空,则返回true;否则返回false
      自:
      1.2
    • outcode

      public int outcode(double x, double y)
      确定指定坐标相对于此Rectangle2D的位置。此方法计算适当的掩码值的二进制OR,指示对于此Rectangle2D的每一边,指定的坐标是否与该Rectangle2D的其余部分在边的同一侧。
      指定者:
      outcode 在类 Rectangle2D
      参数:
      x - 指定的X坐标
      y - 指定的Y坐标
      返回:
      所有适当出码的逻辑OR。
      自:
      1.2
      参见:
    • createIntersection

      public Rectangle2D createIntersection(Rectangle2D r)
      返回一个新的Rectangle2D对象,表示此Rectangle2D与指定Rectangle2D的交集。
      指定者:
      createIntersection 在类 Rectangle2D
      参数:
      r - 与此Rectangle2D相交的Rectangle2D
      返回:
      包含在指定Rectangle2D和此Rectangle2D中的最大Rectangle2D
      自:
      1.2
    • createUnion

      public Rectangle2D createUnion(Rectangle2D r)
      返回一个新的Rectangle2D对象,表示此Rectangle2D与指定Rectangle2D的并集。
      指定者:
      createUnion 在类 Rectangle2D
      参数:
      r - 与此Rectangle2D组合的Rectangle2D
      返回:
      包含指定Rectangle2D和此Rectangle2D的最小Rectangle2D
      自:
      1.2
    • equals

      public boolean equals(Object obj)
      检查两个矩形是否相等。

      结果为true当且仅当参数不为null且为具有与此Rectangle相同的左上角、宽度和高度的Rectangle对象时。

      覆盖:
      equals 在类 Rectangle2D
      参数:
      obj - 与此Rectangle进行比较的Object
      返回:
      如果对象相等,则返回true;否则返回false
      参见:
    • toString

      public String toString()
      返回表示此Rectangle及其值的String
      覆盖:
      toString 在类 Object
      返回:
      表示此Rectangle对象的坐标和大小值的String