如何使用一个包中的两个主文件来绘制javafx中的图表?

时间:2017-06-13 12:28:43

标签: java arraylist javafx javafx-2 javafx-8

我有两个文件,其中包含fxml的main函数和一个控制器文件,以及一个涉及NewFXMain.java的performance.java文件。 实际上我在parameterSelectionController.java中有三个数组列表,我想使用NewFXMain.java绘制它,它使用performance.java(需要传递的参数是一个折线图参数和三个数组列表)。但问题是我首先有两个主文件我想使用parameterselectionmain.java收集参数之后我想要使用第二个是NewFXMain.java绘制折线图。

要求:

1)使用parameterSelectionController.java收集参数数组列表。

2)使用NewFXMain.java使用数组列表绘制图表。

予。 ParameterSelectionController.java

for(int i=0;i<arr.size();i++)
{
    if(arr.get(i)==null)
    {
        System.out.println("no value in" + arr.get(i));
    }
    else
    {
        refined.add(arr.get(i));
    }

}
final ArrayList ar = new ArrayList();
for(int i=0; i<refined.size();i++)
{
    System.out.println("you selected : " + refined.get(i));
    System.out.println("size of refined arraylist is " + refined.size());
}

Statement st = conn.createStatement();
System.out.println(engineList);
for(int j=0;j<engineList.size()+1;j++)
{ 

    ar.clear();
    String sql = "select * from Parameters_Detail where Engine_No=" + "\""+ engineList.get(0).get(j).toString().trim() + "\"";
    ResultSet rs = st.executeQuery(sql);
while(rs.next())
{  
    for(int i=0;i<refined.size();i++)
    {   
        ar.add(rs.getFloat(refined.get(i).toString()));
    }
}


for(int i=0;i<ar.size();i++)
{
    System.out.println(refined.get(i) + " column is having value : " +ar.get(i) + " for engine no: " + engineList.get(0).get(j));
}

    collection.add(new ArrayList(ar));
}
System.out.println(engineList.get(0));  //engine ArrayList
System.out.println(refined);           //refined ArrayList
System.out.println(collection);       //collection ArrayList
}
public ArrayList sendEnginesList()
 {
return (ArrayList)engineList;
 }
public ArrayList sendParameterList()
 {
return refined;
 }
public ArrayList sendParameterValues()
 {
return collection;
 }

ii.ParameterSelectionMain.java

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;


public class ParameterSelectionMain extends Application {

@Override
 public void start(Stage stage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("ParameterSelectionFXML.fxml"));
    //stage.initStyle(StageStyle);
    stage.setTitle("Select parameters of your choice");
    stage.setScene(new Scene(root));
    stage.show();
}

/**
 * @param args the command line arguments
 */

public static void main(String[] args) {
    launch(args);
}

}

iii.PERFORMANCE.java

import ParameterSelection.*;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.XYChart;

public class performance {

protected LineChart<String,Number> lineChart;
protected ArrayList parameters;
protected ArrayList<List> param;
protected ArrayList engines;
public XYChart.Series series = new XYChart.Series();



public performance(LineChart<String,Number> lineChart, ArrayList parameters, ArrayList<List> paramValues, ArrayList engines) {
    this.lineChart = lineChart;
    this.parameters = parameters;
    this.param = paramValues;
    this.engines = engines;

}

public void generateChart() {
for (int i = 0; i < engines.size(); i++) {
    XYChart.Series series = new XYChart.Series();
    series.setName(engines.get(i).toString());
    for (int j = 0; j < parameters.size(); j++) {
        series.getData().add(new XYChart.Data(parameters.get(j).toString(), param.get(i).get(j)));
    }
    lineChart.getData().add(series);
}
System.out.println(lineChart);
}

}

我想使用涉及performance.java的NewFXMain.java在线图中绘制上述数据

III。 NewFXMain.java

import ParameterSelection.ParameterSelectionController;
import java.util.ArrayList; 
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.stage.Stage;

public class NewFXMain extends Application {

@Override 
public void start(Stage stage)
    {
    stage.setTitle("Performance Analysis");

    final CategoryAxis xAxis = new CategoryAxis();
    final NumberAxis yAxis = new NumberAxis();

    xAxis.setLabel("Values");
    //yAxis.setLabel("Engines");

    LineChart<String, Number> lineChart = new LineChart<String,Number>(xAxis,yAxis);

    Scene scene  = new Scene(lineChart,800,600); 

    lineChart.setTitle("Performance Analysis");



     ParameterSelectionController psc = new ParameterSelectionController();

     performance performvalues = new performance(lineChart, psc.sendParameterList(), psc.sendParameterValues(), (ArrayList)psc.sendEnginesList().get(0));
     performvalues.generateChart();

     stage.setScene(scene);
     stage.show();
    }    
public static void main(String[] args)
{
    launch(args);
}
}

1 个答案:

答案 0 :(得分:-1)

尝试这样的事情:

public class Main {
  public static final void main(String... args) {
    ParameterSelectionMain.main(args);
    NewFXMain.main(args);
  }
}