getDisplayPosition方法在使用SceneBuilder制作的软件中返回0

时间:2017-03-13 09:04:28

标签: java javafx javafx-2 linechart scenebuilder

我创建了一个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并且它无法正常工作

0 个答案:

没有答案