Java 使用Rectangle.intersect()无法将矩形转换为边界?

Java 使用Rectangle.intersect()无法将矩形转换为边界?,java,javafx,rectangles,scene,Java,Javafx,Rectangles,Scene,所以我从一个矩形中传递两个值,看看它是否与另一个矩形相交。我将属性值x、y、w、h作为参数传递给函数,然后在其中创建一个矩形,并将参数设置为其属性。然后,我使用rectangle.intersectsrect测试它,看看它们是否重叠。代码如下 问题:线路输入putRectangle.IntersectsCannedRectangle;给出的错误表示不兼容的类型:无法将矩形转换为边界 谷歌等搜索引擎对该错误没有结果 我该怎么做呢?谢谢 import javafx.scene.shape.Recta

所以我从一个矩形中传递两个值,看看它是否与另一个矩形相交。我将属性值x、y、w、h作为参数传递给函数,然后在其中创建一个矩形,并将参数设置为其属性。然后,我使用rectangle.intersectsrect测试它,看看它们是否重叠。代码如下

问题:线路输入putRectangle.IntersectsCannedRectangle;给出的错误表示不兼容的类型:无法将矩形转换为边界

谷歌等搜索引擎对该错误没有结果

我该怎么做呢?谢谢

import javafx.scene.shape.Rectangle;
-----------^^^^^^^^^^^^^^^^------------

public boolean isIntersectingNode(double inputX, double inputY, double inputWidth, double inputHeight)
{

    Rectangle inputRectangle = new Rectangle(inputX, inputY, inputWidth, inputHeight);
    double newX = 20, newY = 20, newW = 20, newH = 20;

    Rectangle scannedRectangle = new Rectangle(newX, newY, newW, newH);

    return inputRectangle.intersects(scannedRectangle);  <<<<<<<ERROR HERE

}
注意:我稍微简化了代码。但无论我如何更改代码,函数中的scannedRectangle段都会给出该错误。

请注意,这需要一个Bounds类型的对象作为参数。矩形不是从边界继承的,因此不能在此处使用。您可能需要尝试其中一种方法来获取边界,然后进行相交。

错误是因为接受对象作为输入参数:

public boolean intersects(Bounds localBounds)
如果在局部坐标中指定了给定的边界,则返回true 此节点的空间与此节点的形状相交

另一方面,在isIntersectingNode方法中,不会将矩形实例添加到场景图中,因此无法检查交点,因为它们没有坐标空间

作为解决方案,您可以使用原始矩形对象,该对象附着到场景图并执行,例如:

 rect.getBoundsInParent().intersects(x, y, w, h);
javafx.scene.shape.Rectangle是一个节点。由于没有将这些对象用作场景的一部分,因此最好使用来检查交点。此类不扩展节点,它允许您检查2个矩形2的交点

public boolean isIntersectingNode(double inputX,
                                  double inputY,
                                  double inputWidth,
                                  double inputHeight) {

    Rectangle2D inputRectangle = new Rectangle2D(inputX, inputY, inputWidth, inputHeight);
    double newX = 20, newY = 20, newW = 20, newH = 20;

    Rectangle2D scannedRectangle = new Rectangle2D(newX, newY, newW, newH);

    return inputRectangle.intersects(scannedRectangle);
}

如果您使用了像Eclipse这样的适当IDE,就不会发生这种情况,因为它们总是显示一个参数列表。。。。只是说,没有适当的IDE编程就像驾驶没有汽车内部和自制的木制工具作为控制mechanics@specializt我实际上在使用NetBeans。我也使用Eclipse。这取决于我在做什么。在整个程序中,双值来自的矩形是一个标签/节点。这就是为什么我在函数中创建矩形,所以我有两个矩形要比较。这似乎是比较两个节点位置的简单方法。使用矩形2D可以做到这一点。非常感谢。