javaawt矩形交集

javaawt矩形交集,java,awt,rectangles,intersect,Java,Awt,Rectangles,Intersect,我有两个矩形: Rectangle rectZR = new Rectangle(513, 163, 38, 39); //(x,y,width,height) Rectangle rectCorrect = new Rectangle(76, 206, 44, 44); 我确实: Rectangle intersect = rectZR.intersection(rectCorrect); 正如坐标所示,这两个矩形实际上并不相交,但Java仍然返回一个交点,intersect具有以下尺寸(

我有两个矩形:

Rectangle rectZR = new Rectangle(513, 163, 38, 39); //(x,y,width,height)
Rectangle rectCorrect = new Rectangle(76, 206, 44, 44);
我确实:

Rectangle intersect = rectZR.intersection(rectCorrect);
正如坐标所示,这两个矩形实际上并不相交,但Java仍然返回一个交点,
intersect
具有以下尺寸(x,y,width,height):

这是一个bug,还是我做错了什么?

关于intersect方法状态:

计算此矩形与指定矩形的交点 矩形。返回一个新矩形,该矩形表示 两个矩形如果两个矩形不相交,则结果为 将是一个空矩形

而整个类的JavaDoc指定:

宽度或高度为负的矩形既没有位置也没有位置 沿具有负尺寸的轴标注尺寸。这样的长方形 被视为沿这些轴不存在这样的矩形也是 空关于安全壳计算和测试方法 如果它包含或相交一个点或矩形将始终返回 错。将这样一个矩形与一个点或 矩形将在生成结果时完全忽略矩形。 如果两个矩形对象组合在一起,并且每个对象都有一个负数 维度,则结果将至少有一个负维度

所以,由两个负维度的交集创建的矩形实际上意味着不存在交集。您可以使用
intersects()
方法对此进行检查:

boolean intersects = rectZR.intersects(rectCorrect);
如果要知道矩形是否相交,请使用“相交”方法。无论矩形是否相交,intersection方法都返回一个矩形。如果宽度和高度都为负值,则矩形不相交。
boolean intersects = rectZR.intersects(rectCorrect);