我有一个包含单个列的javafx表(carTable):
+-------------+
+ Brand +
+-------------+
此列是可观察列表(carOL)的一部分。此OL还包含2个列表(“日期”和“价格”)。对于每个品牌,可以从互联网上下载特定时间窗口的价格。
例如:
Audi
2014-01-01
2014-01-02
55000
90000
BMW
2014-01-01
2014-01-02
85000
70000
我现在想要创建一个包含所有这些数据的折线图,比较不同品牌之间的价格发展。
到目前为止我已经提出了什么:
@FXML private CategoryAxis xAxis = new CategoryAxis();
@FXML private NumberAxis yAxis = new NumberAxis();
@FXML private LineChart<String, Number> lc = new LineChart<>(xAxis,yAxis);
Series<String, Number> series = new Series<>();
List<String> d = new ArrayList<String>();
List<Double> p = new ArrayList<Double>();
int id = 0;
for (Car c : carOL) {
d = c.getDate(); // returns array list with dates from OL
p = c.getPrice(); // returns array list with prices from OL
series.getData().add(new XYChart.Data<>(d.get(id), p.get(id)));
id++;
}
lc.getData().add(series);
这当然不能完全归还我想要的东西。我不知何故需要为每个品牌创建单独的“系列”。
有人可以帮忙吗?
答案 0 :(得分:1)
如果日期数组中的项目顺序与价格数组中的项目顺序相对应,则需要:
for (Car c : carOL) {
d = c.getDate(); // returns array list with dates from OL
p = c.getPrice(); // returns array list with prices from OL
for (String dates : d.getDate()) {
series.getData().add(new XYChart.Data<>(dates, p.get(id)));
id++;
}
}
浏览所有日期并以适当的价格添加它们。