Как я могу отсортировать или заказать xAxis BarChart в JavaFX 8, когда xAxis, хотя он определен как строка, представляет числа. Например:Заказ категории xAxis в JavaFX 8 BarChart
@Override public void start(Stage stage) {
stage.setTitle("Bar Chart Sample");
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
final BarChart<String,Number> bc =
new BarChart<>(xAxis,yAxis);
bc.setTitle("Country Summary");
xAxis.setLabel("Number");
yAxis.setLabel("Value");
XYChart.Series series1 = new XYChart.Series();
series1.setName("Series-1");
series1.getData().add(new XYChart.Data("2",200));
series1.getData().add(new XYChart.Data("3",500));
series1.getData().add(new XYChart.Data("4",100));
XYChart.Series series2 = new XYChart.Series();
series2.setName("Series-2");
series2.getData().add(new XYChart.Data("1",900));
series2.getData().add(new XYChart.Data("2",150));
series2.getData().add(new XYChart.Data("3",50));
series2.getData().add(new XYChart.Data("4",700));
Scene scene = new Scene(bc,800,600);
bc.getData().addAll(series1, series2);
stage.setScene(scene);
stage.show();
}
Хотя это упрощенный способ показать проблему, в моем коде я генерации BarChart из огромного файла Excel. Ниже приведен фрагмент кода am:
final ObservableList<XYChart.Series<String,Number>> barChartData = FXCollections.observableArrayList();
Iterator<Map.Entry<String, ArrayList<XYBean>>> it = xyBean.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, ArrayList<XYBean>> entry = it.next();
XYChart.Series series = new XYChart.Series<>();
series.setName(entry.getKey());
for (XYBean xybean : entry.getValue()) {
series.getData().add(new XYChart.Data(xybean.getxValue(), xybean.getyValue()));
}
barChartData.add(series);
}
barChart.setData(barChartData);
Пожалуйста, помогите, и спасибо заранее!
Спасибо за ответ, но я попытался использовать компаратор, но, вероятно, я делал все это неправильно, пожалуйста, поделитесь кодом, как вы достичь этого, учитывая фрагмент кода? Спасибо. – user3456266
ObservableList list = xAxis.getCategories(); Кажется, эта строка ничего не получает, когда я проверяю размер списка, нуль, я что-то упускаю? Благодарю. –
user3456266
Убедитесь, что вы вызываете его после того, как данные загружены в диаграмму. – JeramyRR