- 所有已实现的接口:
-
Shape
,Serializable
,Cloneable
- 直接已知的子类:
-
DefaultCaret
Rectangle
指定了一个坐标空间中由Rectangle
对象的左上角点(x,y)
、宽度和高度围起来的区域。
Rectangle
对象的width
和height
是public
字段。创建Rectangle
的构造函数和可以修改一个Rectangle
的方法不会阻止为宽度或高度设置负值。
一个Rectangle
的宽度或高度恰好为零时,沿着这些轴的位置具有零维度,但在其他方面被视为空。对于这样的Rectangle
,isEmpty()
方法将返回true。如果任一维度为零,则测试空Rectangle
是否包含或与点或矩形相交的方法将始终返回false。将这样的Rectangle
与点或矩形组合的方法将包括Rectangle
在结果中的位置,就好像调用add(Point)
方法一样。
只影响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
- 参见:
-
Nested Class Summary
Nested classes/interfaces declared in class java.awt.geom.Rectangle2D
Rectangle2D.Double, Rectangle2D.Float
-
Field Summary
Modifier and TypeFieldDescriptionint
Rectangle
的高度。int
Rectangle
的宽度。int
Rectangle
左上角的X坐标。int
Rectangle
左上角的Y坐标。Fields declared in class java.awt.geom.Rectangle2D
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
-
Constructor Summary
ConstructorDescription构造一个新的Rectangle
,其左上角在坐标空间中为(0, 0),宽度和高度都为零。Rectangle
(int width, int height) 构造一个新的Rectangle
,其左上角在坐标空间中为(0, 0),宽度和高度由相同名称的参数指定。Rectangle
(int x, int y, int width, int height) 构造一个新的Rectangle
,其左上角由(x,y)
指定,宽度和高度由相同名称的参数指定。构造一个新的Rectangle
,其左上角为(0, 0),宽度和高度由Dimension
参数指定。构造一个新的Rectangle
,其左上角为指定的Point
,宽度和高度都为零。构造一个新的Rectangle
,其左上角由Point
参数指定,宽度和高度由Dimension
参数指定。构造一个新的Rectangle
,初始化为与指定Rectangle
的值相匹配。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(int newx, int newy) 将由整数参数newx,newy
指定的点添加到此Rectangle
的边界。void
将指定的Point
添加到此Rectangle
的边界。void
将一个Rectangle
添加到此Rectangle
。boolean
contains
(int x, int y) 检查此Rectangle
是否包含指定位置(x,y)
处的点。boolean
contains
(int X, int Y, int W, int H) 检查此Rectangle
是否完全包含指定位置(X,Y)
和指定尺寸(W,H)
的Rectangle
。boolean
检查此Rectangle
是否包含指定的Point
。boolean
检查此Rectangle
是否完全包含指定的Rectangle
。返回表示此Rectangle2D
与指定Rectangle2D
相交的新Rectangle2D
对象。返回表示此Rectangle2D
与指定Rectangle2D
联合的新Rectangle2D
对象。boolean
检查两个矩形是否相等。获取此Rectangle
的边界Rectangle
。返回Shape
的高精度和更准确的边界框,比getBounds
方法更准确。double
以double
精度返回边界Rectangle
的高度。返回此Rectangle
的位置。getSize()
获取此Rectangle
的大小,由返回的Dimension
表示。double
getWidth()
以double
精度返回边界Rectangle
的宽度。double
getX()
以double
精度返回边界Rectangle
的X坐标。double
getY()
以double
精度返回边界Rectangle
的Y坐标。void
grow
(int h, int v) 水平和垂直同时调整Rectangle
的大小。boolean
inside
(int X, int Y) 已弃用。计算此Rectangle
与指定Rectangle
的交集。boolean
确定此Rectangle
和指定的Rectangle
是否相交。boolean
isEmpty()
确定RectangularShape
是否为空。void
move
(int x, int y) 已弃用。JDK版本1.1后已被setLocation(int, int)
取代。int
outcode
(double x, double y) 确定指定坐标相对于此Rectangle2D
的位置。void
reshape
(int x, int y, int width, int height) 已弃用。JDK版本1.1后已被setBounds(int, int, int, int)
取代。void
resize
(int width, int height) 已弃用。JDK版本1.1后已被setSize(int, int)
取代。void
setBounds
(int x, int y, int width, int height) 将此Rectangle
的边界设置为指定的x
、y
、width
和height
。void
将此Rectangle
的边界设置为与指定Rectangle
匹配。void
setLocation
(int x, int y) 将此Rectangle
移动到指定位置。void
setLocation
(Point p) 将此Rectangle
移动到指定位置。void
setRect
(double x, double y, double width, double height) 将此Rectangle
的边界设置为包围指定x
、y
、width
和height
的整数边界。void
setSize
(int width, int height) 将此Rectangle
的大小设置为指定的宽度和高度。void
将此Rectangle
的大小设置为与指定Dimension
匹配。toString()
返回表示此Rectangle
及其值的String
。void
translate
(int dx, int dy) 沿X坐标轴向右移动指定距离,沿Y坐标轴向下移动,将此Rectangle
转换。计算此Rectangle
与指定Rectangle
的并集。Methods declared in class java.awt.geom.Rectangle2D
add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union
Methods declared in class java.awt.geom.RectangularShape
clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
Methods declared in interface java.awt.Shape
contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects
-
Field Details
-
x
public int xRectangle
的左上角的X坐标。- 自:
- 1.0
- 另请参见:
-
y
public int yRectangle
的左上角的Y坐标。- 自:
- 1.0
- 另请参见:
-
width
public int widthRectangle
的宽度。- 自:
- 1.0
- 另请参见:
-
height
public int heightRectangle
的高度。- 自:
- 1.0
- 另请参见:
-
-
Constructor Details
-
Rectangle
public Rectangle()构造一个新的Rectangle
,其左上角在坐标空间中为(0,0),宽度和高度均为零。 -
Rectangle
构造一个新的Rectangle
,初始化为与指定Rectangle
的值相匹配。- 参数:
-
r
- 从中复制初始值以构造新的Rectangle
的Rectangle
- 自:
- 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
- 参数:
-
p
- 是Rectangle
的左上角的Point
-
d
- 一个Dimension
,表示Rectangle
的宽度和高度
-
Rectangle
构造一个新的Rectangle
,其左上角由指定的Point
指定,宽度和高度均为零。- 参数:
-
p
- 是Rectangle
的左上角
-
Rectangle
构造一个新的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
- 指定者:
-
getBounds
在接口Shape
- 覆盖:
-
getBounds
在类RectangularShape
- 返回:
-
一个新的
Rectangle
,等于此Rectangle
的边界Rectangle
。 - 自:
- 1.1
- 另请参见:
-
getBounds2D
返回Shape
的边界框的高精度和更准确的边界框,比getBounds
方法更准确。请注意,不能保证返回的Rectangle2D
是包围Shape
的最小边界框,只能保证Shape
完全位于指定的Rectangle2D
内。此方法返回的边界框通常比getBounds
方法返回的边界框更紧凑,并且永远不会因溢出问题而失败,因为返回值可以是使用双精度值存储尺寸的Rectangle2D
的实例。请注意,内部定义可能导致
shape
的定义轮廓上的点可能不被认为包含在返回的bounds
对象中,但只有在这些点也不被认为包含在原始shape
中的情况下才是如此。如果一个
point
根据contains(point)
方法在shape
内部,那么根据bounds
的contains(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
将此Rectangle
的边界Rectangle
设置为与指定Rectangle
相匹配。此方法包含是为了完整性,以与
Component
的setBounds
方法相对应。- 参数:
-
r
- 指定的Rectangle
- 自:
- 1.1
- 另请参见:
-
setBounds
public void setBounds(int x, int y, int width, int height) 将此Rectangle
的边界Rectangle
设置为指定的x
、y
、width
和height
。此方法包含是为了完整性,以与
Component
的setBounds
方法相对应。- 参数:
-
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
的边界设置为包围指定x
、y
、width
和height
的整数边界。如果参数指定的Rectangle
超出整数的最大范围,则结果将是指定的Rectangle
与最大整数边界的最佳表示。- 指定者:
-
setRect
在类Rectangle2D
- 参数:
-
x
- 指定矩形左上角的X坐标 -
y
- 指定矩形左上角的Y坐标 -
width
- 指定矩形的宽度 -
height
- 指定矩形的新高度
-
reshape
Deprecated.As of JDK version 1.1, replaced bysetBounds(int, int, int, int)
.将此Rectangle
的边界设置为指定的x
、y
、width
和height
。- 参数:
-
x
- 此Rectangle
左上角的新X坐标 -
y
- 此Rectangle
左上角的新Y坐标 -
width
- 此Rectangle
的新宽度 -
height
- 此Rectangle
的新高度
-
getLocation
返回此Rectangle
的位置。此方法是为了完整性而包含的,以与
Component
的getLocation
方法相对应。- 返回:
-
是此
Rectangle
左上角的Point
。 - 自版本:
- 1.1
- 参见:
-
setLocation
将此Rectangle
移动到指定位置。此方法是为了完整性而包含的,以与
Component
的setLocation
方法相对应。- 参数:
-
p
- 指定此Rectangle
的新位置的Point
- 自版本:
- 1.1
- 参见:
-
setLocation
public void setLocation(int x, int y) 将此Rectangle
移动到指定位置。此方法是为了完整性而包含的,以与
Component
的setLocation
方法相对应。- 参数:
-
x
- 新位置的X坐标 -
y
- 新位置的Y坐标 - 自版本:
- 1.1
- 参见:
-
move
Deprecated.As of JDK version 1.1, replaced bysetLocation(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
获取此Rectangle
的大小,返回表示Dimension
的对象。此方法是为了完整性而包含的,以与
Component
的getSize
方法相对应。- 返回:
-
一个
Dimension
,表示此Rectangle
的大小。 - 自版本:
- 1.1
- 参见:
-
setSize
将此Rectangle
的大小设置为与指定Dimension
相匹配。此方法是为了完整性而包含的,以与
Component
的setSize
方法相对应。- 参数:
-
d
-Dimension
对象的新大小 - 自版本:
- 1.1
- 参见:
-
setSize
public void setSize(int width, int height) 将此Rectangle
的大小设置为指定的宽度和高度。此方法是为了完整性而包含的,以与
Component
的setSize
方法相对应。- 参数:
-
width
- 此Rectangle
的新宽度 -
height
- 此Rectangle
的新高度 - 自版本:
- 1.1
- 参见:
-
resize
Deprecated.As of JDK version 1.1, replaced bysetSize(int, int)
.将此Rectangle
的大小设置为指定的宽度和高度。- 参数:
-
width
- 此Rectangle
的新宽度 -
height
- 此Rectangle
的新高度
-
contains
检查此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
检查此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.As of JDK version 1.1, replaced bycontains(int, int)
.检查此Rectangle
是否包含指定位置(X,Y)
的点。- 参数:
-
X
- 指定的X坐标 -
Y
- 指定的Y坐标 - 返回:
-
如果点
(X,Y)
在此Rectangle
内部,则返回true
;否则返回false
。
-
intersects
确定此Rectangle
和指定的Rectangle
是否相交。如果两个矩形相交,则它们的交集不为空。- 参数:
-
r
- 指定的Rectangle
- 返回:
-
如果指定的
Rectangle
和此Rectangle
相交,则返回true
;否则返回false
。
-
intersection
计算此Rectangle
与指定Rectangle
的交集。返回表示两个矩形交集的新Rectangle
。如果两个矩形不相交,则结果将是一个空矩形。- 参数:
-
r
- 指定的Rectangle
- 返回:
-
包含在指定
Rectangle
和此Rectangle
中的最大Rectangle
;如果矩形不相交,则为空矩形。
-
union
计算此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
将指定的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
将一个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)
。如果为
h
和v
提供了负值,则Rectangle
的大小相应减小。grow
方法将检查整数溢出和下溢,但不会检查width
和height
的结果值是否从负值增长到非负值或从非负值缩小到负值。- 参数:
-
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
返回一个新的Rectangle2D
对象,表示此Rectangle2D
与指定Rectangle2D
的交集。- 指定者:
-
createIntersection
在类Rectangle2D
- 参数:
-
r
- 与此Rectangle2D
相交的Rectangle2D
- 返回:
-
包含在指定
Rectangle2D
和此Rectangle2D
中的最大Rectangle2D
。 - 自:
- 1.2
-
createUnion
返回一个新的Rectangle2D
对象,表示此Rectangle2D
与指定Rectangle2D
的并集。- 指定者:
-
createUnion
在类Rectangle2D
- 参数:
-
r
- 与此Rectangle2D
组合的Rectangle2D
- 返回:
-
包含指定
Rectangle2D
和此Rectangle2D
的最小Rectangle2D
。 - 自:
- 1.2
-
equals
检查两个矩形是否相等。结果为
true
当且仅当参数不为null
且为具有与此Rectangle
相同的左上角、宽度和高度的Rectangle
对象时。- 覆盖:
-
equals
在类Rectangle2D
- 参数:
-
obj
- 与此Rectangle
进行比较的Object
- 返回:
-
如果对象相等,则返回
true
;否则返回false
。 - 参见:
-
toString
返回表示此Rectangle
及其值的String
。
-
contains(int, int)
取代。