public class Rectangle extends Rectangle2D implements Shape, Serializable
Rectangle
指定坐标空间中由Rectangle
对象的左上角(x,y)
包围的区域,其坐标空间,宽度及其高度。
A Rectangle
对象的width
和height
是public
字段。 创建Rectangle
以及可以修改的方法不能阻止为宽度或高度设置负值。
A Rectangle
whose width or height is exactly zero has location along those axes with zero dimension, but is otherwise considered empty. The isEmpty()
方法将返回true为这样一个Rectangle
。 测试一个空的Rectangle
包含或相交点或矩形的方法总是返回false,如果任一维度为零。 将这种Rectangle
与点或矩形组合的方法将包括结果中该轴上Rectangle
的位置,就像调用add(Point)
方法一样。
仅影响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位整数的范围内表示的位置,但沿着一个或两个轴的零维度,那么这些轴中存储的维度将为零。
Rectangle2D.Double, Rectangle2D.Float
Modifier and Type | Field and Description |
---|---|
int |
height
Rectangle 的高度。
|
int |
width
宽度为
Rectangle 。
|
int |
x
Rectangle左上角的X
Rectangle 。
|
int |
y
Rectangle左上角的Y
Rectangle 。
|
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
Constructor and Description |
---|
Rectangle()
构造一个新的
Rectangle ,其左上角在坐标空间中为(0,0),宽度和高度都为零。
|
Rectangle(Dimension d)
构造一个新的
Rectangle ,其左上角为(0,0),宽度和高度由
Dimension 参数指定。
|
Rectangle(int width, int height)
构造一个新的
Rectangle ,其左上角在坐标空间中为(0,0),其宽度和高度由同名参数指定。
|
Rectangle(int x, int y, int width, int height)
构造一个新的
Rectangle ,其左上角被指定为
(x,y) ,其宽度和高度由同名参数指定。
|
Rectangle(Point p)
构造一个新的
Rectangle ,其左上角是指定的
Point ,其宽度和高度均为零。
|
Rectangle(Point p, Dimension d)
|
Rectangle(Rectangle r)
构造一个新的
Rectangle ,初始化以匹配指定的值
Rectangle 。
|
Modifier and Type | Method and Description |
---|---|
void |
add(int newx, int newy)
增加了一个点,由整数参数指定
newx,newy 到此的边界
Rectangle 。
|
void |
add(Point pt)
添加指定的
Point 本的界限
Rectangle 。
|
void |
add(Rectangle r)
增加了
Rectangle 这个
Rectangle 。
|
boolean |
contains(int x, int y)
检查此
Rectangle 是否包含指定位置的点
(x,y) 。
|
boolean |
contains(int X, int Y, int W, int H)
检查此
Rectangle 是否完整包含
Rectangle 在指定位置
(X,Y) 具有指定的尺寸
(W,H) 。
|
boolean |
contains(Point p)
检查此
Rectangle 是否包含指定的
Point 。
|
boolean |
contains(Rectangle r)
检查这
Rectangle 是否完全包含指定的
Rectangle 。
|
Rectangle2D |
createIntersection(Rectangle2D r)
返回一个新的
Rectangle2D 对象,表示该
Rectangle2D 与指定的Rectangle2D的
Rectangle2D 。
|
Rectangle2D |
createUnion(Rectangle2D r)
返回一个新的
Rectangle2D 对象,表示此
Rectangle2D 与指定的Rectangle2D的并
Rectangle2D 。
|
boolean |
equals(Object obj)
检查两个矩形是否相等。
|
Rectangle |
getBounds()
获取边界
Rectangle 这一点
Rectangle 。
|
Rectangle2D |
getBounds2D()
返回一个高精度和更准确的边界框
Shape 比
getBounds 方法。
|
double |
getHeight()
返回
Rectangle 的高度
double 精度。
|
Point |
getLocation()
返回此
Rectangle 的位置。
|
Dimension |
getSize()
获得这个
Rectangle 的大小,由返回的
Dimension 。
|
double |
getWidth()
返回宽度
Rectangle 的边界
double 精度。
|
double |
getX()
返回double精度的边界
Rectangle 的
double 坐标。
|
double |
getY()
返回边界的Y坐标
Rectangle 在
double 精度。
|
void |
grow(int h, int v)
Rectangle 水平和垂直调整大小。
|
boolean |
inside(int X, int Y)
已弃用
从JDK 1.1版开始,替换为
contains(int, int) 。
|
Rectangle |
intersection(Rectangle r)
计算
Rectangle 与指定的Rectangle的
Rectangle 。
|
boolean |
intersects(Rectangle r)
确定此
Rectangle 和指定的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 如此
Rectangle 到指定的
x ,
y ,
width 和
height 。
|
void |
setBounds(Rectangle r)
设置此
Rectangle 的边界
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(Dimension d)
设置此
Rectangle 的大小以匹配指定的
Dimension 。
|
void |
setSize(int width, int height)
将此
Rectangle 的大小设置为指定的宽度和高度。
|
String |
toString()
返回一个
String 代表这个
Rectangle 及其值。
|
void |
translate(int dx, int dy)
将这种
Rectangle 所指示的距离,沿X坐标轴的右侧,向下沿Y坐标轴。
|
Rectangle |
union(Rectangle r)
计算
Rectangle 与指定的Rectangle的并
Rectangle 。
|
add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union
clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
finalize, getClass, notify, notifyAll, wait, wait, wait
contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects
public int x
Rectangle
。
setLocation(int, int)
,
getLocation()
public int y
Rectangle
。
setLocation(int, int)
,
getLocation()
public int width
Rectangle
。
setSize(int, int)
,
getSize()
public int height
Rectangle
的高度。
setSize(int, int)
,
getSize()
public Rectangle()
Rectangle
,其左上角在坐标空间中为(0,0),宽度和高度都为零。
public Rectangle(Rectangle r)
Rectangle
,初始化以匹配指定的值
Rectangle
。
r
-
Rectangle
从其中复制初始值到
Rectangle
public Rectangle(int x, int y, int width, int height)
Rectangle
,其左上角被指定为
(x,y)
,其宽度和高度由相同名称的参数指定。
x
- 指定的X坐标
y
- 指定的Y坐标
width
- 宽度
Rectangle
height
- 的高度是
Rectangle
public Rectangle(int width, int height)
Rectangle
,其左上角在坐标空间中为(0,0),其宽度和高度由相同名称的参数指定。
width
- 宽度
Rectangle
height
-的高度
Rectangle
public Rectangle(Point p, Dimension d)
p
- a
Point
是
Rectangle
d
-一个
Dimension
,代表的宽度和高度
Rectangle
public Rectangle(Point p)
Rectangle
,其左上角是指定的
Point
,其宽度和高度均为零。
p
- a
Point
是
Rectangle
public Rectangle(Dimension d)
Rectangle
,其左上角为(0,0),宽度和高度由
Dimension
参数指定。
d
- a
Dimension
,指定宽度和高度
public double getX()
Rectangle
的
double
坐标。
getX
在
RectangularShape
Rectangle
。
public double getY()
Rectangle
的
double
Rectangle的Y坐标。
getY
在
RectangularShape
Rectangle
。
public double getWidth()
double
精度的边界
Rectangle
的宽度。
getWidth
在类别
RectangularShape
Rectangle
。
public double getHeight()
double
精度的边界
Rectangle
的高度。
getHeight
在
RectangularShape
Rectangle
。
public Rectangle getBounds()
Rectangle
这一点Rectangle
。
包括此方法的完整性,并行getBounds
方法Component
。
getBounds
在界面
Shape
getBounds
在
RectangularShape
Rectangle
,等于
Rectangle
为这
Rectangle
。
Component.getBounds()
,
setBounds(Rectangle)
,
setBounds(int, int, int, int)
public Rectangle2D getBounds2D()
Shape
比getBounds
方法。
需要注意的是没有保证返回Rectangle2D
是最小的边框包围Shape
,只表示Shape
完全在指定的范围内Rectangle2D
。
通过此方法返回的边界框通常比通过返回的更紧密getBounds
方法,而且永远不会因为溢出问题,因为返回值可以是实例Rectangle2D
一个使用双精度值存储尺寸。
需要注意的是definition of insideness可能会导致出现对的定义轮廓点的情况下shape
可能不被认为包含在返回bounds
对象,但只有在这些点也未审议了原有的情况下shape
。
如果point
是内部shape
根据contains(point)
方法,那么它必须是内部返回Rectangle2D
界限根据对象contains(point)
所述的方法bounds
。 特别:
shape.contains(p)
需要bounds.contains(p)
如果point
不在shape
,那么它可能仍然包含在bounds
对象中:
bounds.contains(p)
并不表示shape.contains(p)
getBounds2D
在界面
Shape
getBounds2D
在
Rectangle2D
Rectangle2D
那是一个高精度边界框
Shape
。
Shape.getBounds()
public void setBounds(Rectangle r)
Rectangle
的边界Rectangle
以匹配指定的Rectangle
。
包括此方法的完整性,并行setBounds
方法Component
。
r
- 指定的
Rectangle
getBounds()
,
Component.setBounds(java.awt.Rectangle)
public void setBounds(int x, int y, int width, int height)
Rectangle
如此Rectangle
到指定的x
, y
, width
和height
。
包括此方法的完整性,并行setBounds
方法Component
。
x
- 这个
Rectangle
左上角的新X
Rectangle
y
- 这个
Rectangle
左上角的新Y
Rectangle
width
- 这个
Rectangle
的新宽度
height
- 这个
Rectangle
的新高度
getBounds()
,
Component.setBounds(int, int, int, int)
public void setRect(double x, double y, double width, double height)
Rectangle
为整数范围,其包含指定的x
, y
, width
和height
。
如果参数指定超过最大整数范围的Rectangle
,则结果将是与最大整数边界相交的Rectangle
Rectangle的最佳表示。
setRect
在
Rectangle2D
x
- 指定矩形左上角的X坐标
y
- 指定矩形左上角的Y坐标
width
- 指定矩形的宽度
height
- 指定
height
的新高度
@Deprecated public void reshape(int x, int y, int width, int height)
setBounds(int, int, int, int)
。
Rectangle
如此
Rectangle
到指定的
x
,
y
,
width
和
height
。
x
- 这个
Rectangle
左上角的新X
Rectangle
y
- 这个
Rectangle
左上角的新Y
Rectangle
width
- 这个
Rectangle
的新宽度
height
- 这个
Rectangle
的新高度
public Point getLocation()
Rectangle
的位置。
包括此方法的完整性,并行getLocation
方法Component
。
Point
是这个
Rectangle
。
Component.getLocation()
,
setLocation(Point)
,
setLocation(int, int)
public void setLocation(Point p)
Rectangle
移动到指定的位置。
包括这种方法的完整性,并行setLocation
方法Component
。
p
-
Point
指定此
Rectangle
的新位置
Component.setLocation(java.awt.Point)
,
getLocation()
public void setLocation(int x, int y)
Rectangle
移动到指定的位置。
包括此方法的完整性,并行setLocation
方法Component
。
x
- 新位置的X坐标
y
- 新位置的Y坐标
getLocation()
,
Component.setLocation(int, int)
@Deprecated public void move(int x, int y)
setLocation(int, int)
。
Rectangle
移动到指定的位置。
x
- 新位置的X坐标
y
- 新位置的Y坐标
public void translate(int dx, int dy)
Rectangle
所指示的距离,沿X坐标轴的右侧,向下沿Y坐标轴。
dx
-的距离来移动此
Rectangle
沿X轴
dy
- 沿着Y轴移动这个
Rectangle
的距离
setLocation(int, int)
,
setLocation(java.awt.Point)
public Dimension getSize()
Rectangle
的大小,由返回的Dimension
。
包括这种方法的完整性,并行getSize
方法的Component
。
Dimension
,代表这个
Rectangle
的大小。
Component.getSize()
,
setSize(Dimension)
,
setSize(int, int)
public void setSize(Dimension d)
Rectangle
的大小以匹配指定的Dimension
。
包括此方法的完整性,并行setSize
方法Component
。
d
-
Dimension
对象的新大小
Component.setSize(java.awt.Dimension)
,
getSize()
public void setSize(int width, int height)
Rectangle
的大小设置为指定的宽度和高度。
包括此方法的完整性,并行setSize
方法Component
。
width
- 这个
Rectangle
的新宽度
height
- 这个
Rectangle
的新高度
Component.setSize(int, int)
,
getSize()
@Deprecated public void resize(int width, int height)
setSize(int, int)
。
Rectangle
的大小设置为指定的宽度和高度。
width
- 这个
Rectangle
的新宽度
height
- 这个
Rectangle
的新高度
public boolean contains(Point p)
Rectangle
是否包含指定的
Point
。
p
-
Point
要测试
true
如果指定的Point
是在这个Rectangle
;
false
否则。
public boolean contains(int x, int y)
Rectangle
是否包含指定位置的点
(x,y)
。
x
- 指定的X坐标
y
- 指定的Y坐标
true
如果点(x,y)
是在这个Rectangle
;
false
否则。
public boolean contains(Rectangle r)
Rectangle
是否完全包含指定的
Rectangle
。
r
- 指定的
Rectangle
true
如果Rectangle
被此内完全包含Rectangle
;
false
否则
public boolean contains(int X, int Y, int W, int H)
Rectangle
完全包含
Rectangle
在指定位置
(X,Y)
具有指定尺寸
(W,H)
。
X
- 指定的X坐标
Y
- 指定的Y坐标
W
- 宽度
Rectangle
H
-的高度
Rectangle
true
如果由Rectangle
指定的(X, Y, W, H)
完全封闭在此Rectangle
;
false
否则。
@Deprecated public boolean inside(int X, int Y)
contains(int, int)
。
Rectangle
是否包含指定位置的点
(X,Y)
。
X
- 指定的X坐标
Y
- 指定的Y坐标
true
如果点(X,Y)
是在这个Rectangle
;
false
否则。
public boolean intersects(Rectangle r)
Rectangle
和指定的Rectangle Rectangle
相交。
两个矩形相交,如果它们的交集非空。
r
- 指定的
Rectangle
true
如果指定的Rectangle
和这个Rectangle
相交;
false
否则。
public Rectangle intersection(Rectangle r)
Rectangle
与指定的Rectangle的Rectangle
。
返回一个新Rectangle
表示两个矩形的交集。
如果两个矩形不相交,结果将是一个空的矩形。
r
- 指定的
Rectangle
Rectangle
包含在指定的Rectangle
和在这Rectangle
;
或者如果矩形不相交,则为空矩形。
public Rectangle union(Rectangle r)
Rectangle
与指定的Rectangle的并Rectangle
。
返回一个新的Rectangle
,表示两个矩形的并集。
如果Rectangle
的任何尺寸小于零,则适用non-existant矩形的规则。 如果只有一个维数小于零,则结果将是另一个的副本Rectangle
。 如果两者都具有小于零的维度,则结果将至少有一个维度小于零。
如果得到Rectangle
会有太大而不能表示为一个维度int
,其结果将有一个尺寸Integer.MAX_VALUE
该维。
r
- 指定的
Rectangle
Rectangle
包含指定的
Rectangle
和这个
Rectangle
。
public void add(int newx, int newy)
newx,newy
到此的边界Rectangle
。
如果这个Rectangle
尺寸小于零,则适用non-existant矩形的规则。 在这种情况下,这个Rectangle
的新界限将具有等于指定坐标的位置,宽度和高度等于零。
添加点后,调用contains
添加点作为参数不一定返回true
。 该contains
方法不返回true
用于在右侧或底部边缘点Rectangle
。 因此,如果添加点落在放大的Rectangle
的右边缘或下边缘,则contains
返回false
。 如果指定的点必须包含在新的Rectangle
,则应添加1x1矩形:
r.add(newx, newy, 1, 1);
newx
- 新点的X坐标
newy
- 新点的Y坐标
public void add(Point pt)
Point
本的界限Rectangle
。
如果这个Rectangle
尺寸小于零,则适用non-existant矩形的规则。 在这种情况下,此Rectangle
的新界限将具有等于指定的Point的Point
,宽度和高度等于零的位置。
在添加Point
,拨打contains
并附加了Point
作为参数,并不一定会返回true
。 该contains
方法不返回true
用于在右侧或底部边缘点Rectangle
。 所以,如果添加Point
落在放大的右侧或底部边缘Rectangle
, contains
返回false
为Point
。 如果指定点必须包含在新的Rectangle
,则应添加1x1矩形:
r.add(pt.x, pt.y, 1, 1);
pt
- 新增的
Point
加入此
Rectangle
public void add(Rectangle r)
Rectangle
这个Rectangle
。
所得到的Rectangle
是两个矩形的并集。
如果Rectangle
的任何尺寸小于0,结果将具有另一个Rectangle
。 如果Rectangle
s至少有一个维度小于0,结果将至少有一个维度小于0。
如果Rectangle
具有一个或两个尺寸等于0,则沿着这些轴的0维的结果将等同于通过将相应的原点坐标添加到沿该轴的结果矩形而获得的结果,类似于add(Point)
方法的操作,但没有进一步的贡献。
如果得到Rectangle
会有太大而不能表示为一个维度int
,其结果将有一个尺寸Integer.MAX_VALUE
该维。
r
- 指定的
Rectangle
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
- 垂直展开
public boolean isEmpty()
RectangularShape
是空的。
RectangularShape
为空时,不包含区域。
isEmpty
在
RectangularShape
true
如果RectangularShape
是空的;
false
否则。
public int outcode(double x, double y)
Rectangle2D
。
该方法计算适当的掩码值的二进制OR,该值适用于该Rectangle2D
的每一侧, Rectangle2D
是否与该Rectangle2D
的其余部分位于同一边。
outcode
在
Rectangle2D
x
- 指定的X坐标
y
- 指定的Y坐标
Rectangle2D.OUT_LEFT
,
Rectangle2D.OUT_TOP
,
Rectangle2D.OUT_RIGHT
,
Rectangle2D.OUT_BOTTOM
public Rectangle2D createIntersection(Rectangle2D r)
Rectangle2D
对象,表示该
Rectangle2D
与指定的Rectangle2D的
Rectangle2D
。
createIntersection
在
Rectangle2D
r
-在
Rectangle2D
与此相交
Rectangle2D
Rectangle2D
包含在指定的
Rectangle2D
和在这
Rectangle2D
。
public Rectangle2D createUnion(Rectangle2D r)
Rectangle2D
对象,表示该
Rectangle2D
与指定的Rectangle2D的并
Rectangle2D
。
createUnion
在
Rectangle2D
r
-在
Rectangle2D
与此相结合
Rectangle2D
Rectangle2D
包含指定的
Rectangle2D
和该
Rectangle2D
。
public boolean equals(Object obj)
结果是true
当且仅当参数不是null
并且是一个Rectangle
对象,具有与此Rectangle
相同的左上角,宽度和高度。
equals
在
Rectangle2D
obj
-
Object
与此
Rectangle
true
如果对象相等;
false
否则。
Object.hashCode()
, HashMap
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.