2017-06-13 4 views
-1

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); 
} 
} 
+1

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. –

Répondre

-1

Essayez quelque chose comme ceci:

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

Dans quel fichier je devrais écrire ceci? @Usagi Miyamoto –

+1

Les deux méthodes principales appellent le lancement, et [vous ne pouvez pas appeler le lancement plus d'une fois] (http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html#launch -java.lang.String ...-). –

+0

oui je suppose, alors quelle est la solution possible @James_D –