0
JavaFx StackedBarChartに問題があります:データをカテゴリ順に並べ替えることができません。問題は、具体的には、私は製品のシリーズを作成しなければならないということです(グループ化されています)が、そうするとチャートは挿入順であり、カテゴリ(この場合は日付)ではありません。JavaFx StackedBarChartがカテゴリの後に並んでいません
私はStackedBarChartを作成するために使用するコードザッツ:私は誰かがこの問題の解決策を知っているし、解決策を私に提供することを願ってい
ObservableList<XYChart.Series<String, Number>> data = FXCollections.observableArrayList();
final ArrayList<String> dates = new ArrayList<>();
HashMap<Integer, List<XYChart.Data<String, Number>>> map = new HashMap<>();
HashMap<Integer, String> productNames = new HashMap<>();
for(SoldProduct sp : products) {
if (!map.containsKey(sp.getId())) {
map.put(sp.getId(), new ArrayList<>());
productNames.put(sp.getId(), sp.getName());
}
if(!dates.contains(sp.getDate().toString())){
dates.add(sp.getDate().toString());
}
List<XYChart.Data<String, Number>> list = map.get(sp.getId());
list.add(new XYChart.Data<String, Number>(sp.getDate().toString(), sp.getAmount()));
map.put(sp.getId(), list);
}
((CategoryAxis)barChart.getXAxis()).getCategories().setAll(dates);
barChart.setCategoryGap((500.0/dates.size())/2);
for(Map.Entry<Integer, List<XYChart.Data<String, Number>>> entry : map.entrySet()){
final StackedBarChart.Series<String, Number> series = new StackedBarChart.Series<String, Number>();
series.setName(productNames.get(entry.getKey()));
series.getData().addAll(entry.getValue());
data.add(series);
}
barChart.setData(data);
!どうもありがとう!
EDIT:次の操作を実行して、私は正しい順序
final StackedBarChart.Series<String, Number> notUsed = new StackedBarChart.Series<String, Number>();
notUsed.setName("Workaround JAVAFX BarChart Ordering Problem");
for(String d : dates){
notUsed.getData().add(new XYChart.Data<String, Number>(d, 0));
}
data.add(notUsed);
PSを取得したデータを挿入する前に 'ハック'。最新のバージョン:1.8.0_77-b03を使用しています(以前のバージョンで問題が発生したので、これを読む)