我创建了一个BorderPane并将一个Group容器放在Center位置。在组容器内,我添加了一个LineChart和一个圆圈。 我用一个文件填充我的LineChart并正确填充。我想获取LineChart节点的displayPosition,但是当我应用方法getDisplayPosition时,我得到一个0。
我已经在一个prevoius项目中提供了这个并且它工作得很好但是差异是这次我使用的是SceneBuilder并且它无法正常工作
public class FXMLDocumentController implements Initializable {
@FXML
private LineChart<Float,Float> chartPrincipal;
@FXML
private NumberAxis yAxis;
@FXML
private NumberAxis xAxis;
@FXML
private Circle circle;
@Override
public void initialize(URL url, ResourceBundle rb) {
XYChart.Series seriePrincipal = new XYChart.Series();
seriePrincipal.setName("Distance/Altitude");
ArrayList<Double> distance = new ArrayList<Double>(); //xAxis
ArrayList<Double> altitude = new ArrayList<Double>(); //yAxis
File distanceFile = new File("distance.txt");
File altitudeFile = new File("altitude.txt");
//fileToList is a method I did to fill the ArrayList, nothing unusual here
distance= fileToList(distanceFile);
altitude = fileToList(altitudeFile);
//adding the values of the arrayList to the series
for(int i=0; i<altitude.size(); i++){
seriePrincipal.getData().add(new XYChart.Data(distance.get(i),altitude.get(i)));
}
//filling lineChart with the serie
chartPrincipal.getData().add(seriePrincipal);
chartPrincipal.setCreateSymbols(false);
//I added this "for" cycle to get the display position of every node in the lineChart
for(int i=0;i<distance.size();i++){
System.out.println(distance.get(i)+","+altitude.get(i));
System.out.println(xAxis.getDisplayPosition(distance.get(i))+", "+ yAxis.getDisplayPosition(altitude.get(i)));
}
}
}
注意:我打算做的是获取显示位置并使用这些值创建折线,然后使用折线创建PathTransition,并使圆圈成为将进行过渡的PathTransition的节点,因此它看起来像圆圈正在经历LineChart。再一次,我之前已经完成了这项工作,但是这次我使用的是SceneBuilder并且它无法正常工作