J'ai deux fichiers qui contiennent la fonction principale et un fichier de contrôleur pour fxml et un fichier de performance.java qui implique NewFXMain.java. En fait j'ai trois liste de tableau dans parameterSelectionController.java que je veux tracer en utilisant NewFXMain.java qui utilise performance.java (qui nécessite que les paramètres soient passés est un paramètre de graphique linéaire, et trois liste de tableau). Mais le problème est que j'ai deux fichiers principaux en premier je veux collecter les paramètres en utilisant parameterselectionmain.java après que je veux o tracer le graphique en ligne en utilisant le second qui est NewFXMain.java.Comment puis-je travailler avec deux fichiers principaux dans un paquet pour tracer un graphique dans javafx?
Exigence:
1) Récupérer la liste de tableau de paramètres en utilisant parameterSelectionController.java.
2) tracer le graphique en utilisant les listes de tableaux en utilisant NewFXMain.java.
I. 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);
}
}
JE VEUX LES DONNÉES CI-DESSUS PLOT DANS UN LINE LINE utilisant NewFXMain.java qui implique performance.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);
}
}
Il ne fait pas vraiment de sens d'avoir plus d'un 'Application' classe dans une application. Voir https://stackoverflow.com/questions/32464698/java-how-do-i-start-a-standalone-application-from-the-current-one-when-both-are pour savoir comment structurer quoi (je pense) vous essayez de faire. –