模块 java.desktop
 java.awt

类 Rectangle

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

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

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

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

宽度或高度为负的 Rectangle 沿那些具有负尺寸的轴既没有位置也没有尺寸。这样的 Rectangle 在这些轴上被视为不存在。这样的 Rectangle 在包含计算和方法方面也是空的,测试它是否包含或与点或矩形相交将始终返回 false。将这样的 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 位值,结果的位置将存储到 x y 字段中。存储在 width height 维度字段中的值将被选为尽可能包含真实结果的最大部分的 32 位值。通常,这意味着维度将被独立地裁剪到 32 位整数的范围内,除非必须移动位置以将其存储到它的一对 32 位字段中,然后维度将相对于“最佳表示”进行调整“的位置。如果真实结果具有负维度,因此在一个或两个轴上不存在,则存储的维度在这些轴上将为负数。如果真实结果的位置可以在 32 位整数范围内表示,但沿一个或两个轴的维度为零,则存储的维度在这些轴中将为零。

自从:
1.0
参见:
  • 字段详细信息

  • 构造方法详细信息

    • 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 - PointRectangle 的左上角
      d - 一个 Dimension ,代表 Rectangle 的宽度和高度
    • Rectangle

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

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

    • 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

      包含此方法是为了完整性,以与 Component getBounds 方法并行。

      指定者:
      getBounds 在接口 Shape
      重写:
      getBounds 在类 RectangularShape
      返回:
      一个新的 Rectangle ,等于这个 Rectangle 的边界 Rectangle
      自从:
      1.1
      参见:
    • getBounds2D

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

      请注意,definition of insideness 可能导致 shape 定义轮廓上的点可能不被视为包含在返回的 bounds 对象中,但仅在这些点也不被视为包含在原始 shape 中的情况下。

      如果根据 contains(point) 方法 pointshape 内部,那么根据 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)
      已弃用。
      从 JDK 1.1 版开始,由 setBounds(int, int, int, int) 取代。
      将此 Rectangle 的边界 Rectangle 设置为指定的 xywidthheight
      参数:
      x - 这个 Rectangle 左上角的新 X 坐标
      y - 这个 Rectangle 左上角的新 Y 坐标
      width - 这个 Rectangle 的新宽度
      height - 这个 Rectangle 的新高度
    • getLocation

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

      包含此方法是为了完整性,以与 ComponentgetLocation 方法并行。

      返回:
      Point 是这个 Rectangle 的左上角。
      自从:
      1.1
      参见:
    • setLocation

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

      包含此方法是为了完整性,以与 ComponentsetLocation 方法并行。

      参数:
      p - Point 指定此 Rectangle 的新位置
      自从:
      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)
      已弃用。
      从 JDK 1.1 版开始,由 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)
      已弃用。
      从 JDK 1.1 版开始,由 setSize(int, int) 取代。
      将此 Rectangle 的大小设置为指定的宽度和高度。
      参数:
      width - 这个 Rectangle 的新宽度
      height - 这个 Rectangle 的新高度
    • contains

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

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

      public boolean contains(Rectangle  r)
      检查此 Rectangle 是否完全包含指定的 Rectangle
      参数:
      r - 指定的 Rectangle
      返回:
      true 如果 Rectangle 完全包含在这个 Rectangle 内; 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 的高度
      返回:
      true 如果 (X, Y, W, H) 指定的 Rectangle 完全包含在这个 Rectangle 内; false否则。
      自从:
      1.1
    • inside

      @Deprecated public boolean inside(int X, int Y)
      已弃用。
      从 JDK 1.1 版开始,由 contains(int, int) 取代。
      检查此 Rectangle 是否包含指定位置 (X,Y) 的点。
      参数:
      X - 指定的 X 坐标
      Y - 指定的Y坐标
      返回:
      true 如果点 (X,Y) 在这个 Rectangle 内; false否则。
    • intersects

      public boolean intersects(Rectangle  r)
      确定此 Rectangle 和指定的 Rectangle 是否相交。如果两个矩形的交点不为空,则它们相交。
      参数:
      r - 指定的 Rectangle
      返回:
      true 如果指定的 Rectangle 和这个 Rectangle 相交; 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 的任何维度小于零,则适用 non-existent 矩形的规则。如果只有一个维度小于零,则结果将是另一个 Rectangle 的副本。如果两者的维度都小于零,则结果将至少有一个维度小于零。

      如果生成的 Rectangle 的维度太大而无法表示为 int ,则结果沿该维度的维度为 Integer.MAX_VALUE

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

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

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

      添加一个点后,以添加的点作为参数调用 contains 不一定返回 truecontains 方法不会为 Rectangle 的右侧或底部边缘的点返回 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 的任何维度小于零,则适用 non-existent 矩形的规则。在这种情况下,此 Rectangle 的新边界的位置将等于指定的 Point 的坐标,并且宽度和高度等于零。

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

         r.add(new Rectangle(pt, new Dimension(1, 1)));
       
      参数:
      pt - 新的 Point 添加到这个 Rectangle
    • 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
      返回:
      true 如果 RectangularShape 为空; false否则。
      自从:
      1.2
    • outcode

      public int outcode(double x, double y)
      确定指定坐标相对于此 Rectangle2D 的位置。此方法计算适当掩码值的二进制或,指示对于此 Rectangle2D 的每一侧,指定坐标是否与此 Rectangle2D 的其余部分位于边缘的同一侧。
      指定者:
      outcode 在类 Rectangle2D
      参数:
      x - 指定的X坐标
      y - 指定的Y坐标
      返回:
      所有适当的输出代码的逻辑或。
      自从:
      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
      返回:
      String 表示此 Rectangle 对象的坐标和大小值。