Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将本地坐标转换为JavaFX图表坐标_Java_Javafx_Charts - Fatal编程技术网

如何将本地坐标转换为JavaFX图表坐标

如何将本地坐标转换为JavaFX图表坐标,java,javafx,charts,Java,Javafx,Charts,对于业务应用程序,用户需要能够选择JavaFX折线图的特定部分。目前,我已经使用onMousePressed、onmousedrable和onmouseleased监听器,结合JavaFX矩形和一些坐标魔术,使选择框工作。当我对这些事件执行.getX()和.getY()操作时,我会得到在图表上绘制矩形的适当坐标。这些是我假设的相对于JavaFX图表的坐标 当用户做出选择时,此矩形覆盖图表,并允许用户对其选择执行任何操作或绘制新选择。这一切都是可行的,但当用户开始从上一个选择中绘制时,这将获取相对

对于业务应用程序,用户需要能够选择JavaFX折线图的特定部分。目前,我已经使用onMousePressed、onmousedrable和onmouseleased监听器,结合JavaFX矩形和一些坐标魔术,使选择框工作。当我对这些事件执行.getX()和.getY()操作时,我会得到在图表上绘制矩形的适当坐标。这些是我假设的相对于JavaFX图表的坐标

当用户做出选择时,此矩形覆盖图表,并允许用户对其选择执行任何操作或绘制新选择。这一切都是可行的,但当用户开始从上一个选择中绘制时,这将获取相对于矩形的坐标。我的问题如下:如何使鼠标事件的矩形“透明”,并将这些事件发送到基础组件(折线图)。或者有没有办法将这些坐标转换为折线图坐标

请注意,我已经在所有不同的部分上尝试了localToParent、localToScene,然后是sceneToLocal和sceneToLocal。此外,我还尝试以不同的方式更改pickOnBounds,即使我不完全了解该属性的确切工作方式

谢谢

目前,我已经使用onMousePressed、onmousedrable和onmouseleased监听器,结合JavaFX矩形和一些坐标魔术,使选择框工作。当我对这些事件执行.getX()和.getY()操作时,我会得到在图表上绘制矩形的适当坐标。这些是我假设的相对于JavaFX图表的坐标

不,它不是相对于图表的,它是您单击的目标节点的局部坐标。有关以下内容,请参阅文档:

事件相对于事件原点的水平位置 MouseEvent的来源

图表是由许多节点和窗格组成的复杂事物,每个节点和窗格都有自己的局部坐标系。因此,getX将返回什么将取决于您单击的实际内容。例如,如果在图表顶部覆盖一个半透明的填充矩形,然后在矩形内单击,则坐标将是矩形内的局部坐标

如何使矩形对鼠标事件“透明”,并将这些事件发送到基础组件(折线图)

制作矩形:

或者有没有办法将这些坐标转换为折线图坐标

你可以接到这样的电话 获取场景坐标,而不是本地坐标

然后,可以使用以下方法将坐标转换为任何节点的局部坐标:

因此,只要您在折线图中有一个相关节点的参考,您就可以确定鼠标单击的相对坐标

目前,我已经使用onMousePressed、onmousedrable和onmouseleased监听器,结合JavaFX矩形和一些坐标魔术,使选择框工作。当我对这些事件执行.getX()和.getY()操作时,我会得到在图表上绘制矩形的适当坐标。这些是我假设的相对于JavaFX图表的坐标

不,它不是相对于图表的,它是您单击的目标节点的局部坐标。有关以下内容,请参阅文档:

事件相对于事件原点的水平位置 MouseEvent的来源

图表是由许多节点和窗格组成的复杂事物,每个节点和窗格都有自己的局部坐标系。因此,getX将返回什么将取决于您单击的实际内容。例如,如果在图表顶部覆盖一个半透明的填充矩形,然后在矩形内单击,则坐标将是矩形内的局部坐标

如何使矩形对鼠标事件“透明”,并将这些事件发送到基础组件(折线图)

制作矩形:

或者有没有办法将这些坐标转换为折线图坐标

你可以接到这样的电话 获取场景坐标,而不是本地坐标

然后,可以使用以下方法将坐标转换为任何节点的局部坐标:


因此,只要您在折线图中有一个要确定鼠标点击相对坐标的相关节点的参考,您就可以这样做。

矩形。setMouseTransport(true);这正是我需要做的,我觉得自己很愚蠢,因为在阅读了两天的文档后没有找到这个,非常感谢。答案已批准:)矩形。setMouseTransparent(true);这正是我需要做的,我觉得自己很愚蠢,因为在阅读了两天的文档后没有找到这个,非常感谢。答复获得批准:)
rectangle.setMouseTransparent(true);
node.sceneToLocal(mouseEvent.getSceneX(), mouseEvent.getSceneY());