【发布时间】:2017-06-14 06:32:42
【问题描述】:
我有一个散点图,我希望能够移动点,拖动它们
问题是它不像画布,我显然不能使用eventgetX()或getSceneX(),因为有轴,根据场景的大小,它们不在同一位置,所以0/0是显然没有根据图表设置,如果我改变场景的大小,距离:边框/轴也会改变
相关代码:
<ScatterChart fx:id="chart" onDragDetected="#chartDragDetected"
在.fxml中
和:
//The method associated with the chart
@FXML
void chartDragDetected(MouseEvent event) {
//Lots of try to find the coordinate but they change
//depending of the size of the scene
}
.
//in the initialize, populating the chart
double res=0;
for (double x = fct.getInf(); x<=fct.getSup(); x+=0.05 ){ //precision of graph
res = fct.f_de_x(x);
Data<Number,Number> dt = new Data<Number, Number>(x, res);
series.getData().add(dt);
}
chart.getData().add(series);
在控制器中
【问题讨论】:
-
发布代码并不是为了让我们知道你已经完成了你的作业(与流行的看法相反,这实际上是一个主要针对专业程序员的网站,当然不是为了解决作业问题的人欢迎任何人在这里提问);这样我们就有了一个起点来了解您所坚持的。这个 sn-p 没有多大帮助;这个处理程序注册到哪个节点?如果是图表本身,如果您使用每个数据点的节点注册处理程序会不会更容易?
-
@James_D 这不是我的作业,正如我每天看到的那样,来这里的不是“专业程序员”,不仅很清楚这是世界各地的人在询问他们的工作,这是一个为期 8 个月的项目,我在某一点上询问社区,约占我项目的 20% 该方法在这里调用:
<ScatterChart fx:id="chart" onDragDetected="#chartDragDetected"所以在图表上是的,我不明白你的意思,在每一点上?它是 Data我无法在此设置处理程序,我尝试过我认为 -
你说“我在做一个学校项目”。但我的观点不是关于项目,我的观点是关于让你发布代码的目的。请阅读帮助页面,尤其是this。将数据添加到系列后,调用
data.getNode()并将处理程序设置为返回的结果。然后可以在拖动节点时更新数据的值。 -
@James_D 非常感谢,这是我理解的关键,当它完全工作时,我肯定会发布一些代码作为答案,但我现在已经很近了,再次感谢跨度>
标签: java javafx charts drag-and-drop scatter