I have been going through the following tutorial for creating JavaFX graphs https://docs.oracle.com/javafx/2/charts/line-chart.htm
My question is, how can I dynamically create and add new series of data to my LineChart without explicating declaring each series i.e. series1, series2?
When I compile and run my program only a single series has been added.
Here is my code
Main class that creates the LineChart and instantiate 10 different companies.
public class StockChart extends Application {
@Override public void start(Stage stage) {
stage.setTitle("Stock Market");
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
xAxis.setLabel("Time of Day");
yAxis.setLabel("Price Per Stock");
LineChart<String,Number> lineChart =
new LineChart<String,Number>(xAxis,yAxis);
Scene scene = new Scene(lineChart,800,600);
lineChart.setTitle("Stock Exchange");
String[] timeOfDay = {"8:00AM", "9:00AM", "10:00AM", "161:00AM", "12:00PM",
"1:00PM", "2:00PM", "3:00PM", "4:00PM" };
String[] stockCompany = { "AAPL", "ORCL", "MSFT", "GOOG", "AMZN", "FB", "HPQ", "YHOO", "ADSK", "ATVI"};
for(int i = 0; i < stockCompany.length; i++) {
CompanyStockData tmpCompany = new CompanyStockData(lineChart, timeOfDay, stockCompany[i]);
lineChart.getData().add(tmpCompany.generateStock());
// lineChart.getData().add(line.generateStock());
// lineChart.seriesRemoved(line.series);
}
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
CompanyStockData Class for generating a new series to be added to LineChart
public class CompanyStockData extends StockChart {
protected LineChart<String,Number> lineChart;
protected String[] timeOfDay;
protected String companyName;
public XYChart.Series series = new XYChart.Series();
public CompanyStockData(LineChart<String,Number> lineChart, String[] timeOfDay, String companyName) {
this.lineChart = lineChart;
this.timeOfDay = timeOfDay;
this.companyName = companyName;
}
public XYChart.Series generateStock() {
series.setName(companyName);
System.out.println(lineChart);
for(int i = 0; i < timeOfDay.length; i++) {
System.out.println(timeOfDay[i]);
series.getData().add(new XYChart.Data(timeOfDay[i], i*2));
}
return series;
}
public static void main(String[] args) {
}
@Override
public String toString() {
return "Company : " + this.companyName +
" Time Of Day Length " + this.timeOfDay.length;
}
}