【问题标题】:All labels at the same position in xAxis Barchart - JavaFxxAxis条形图中同一位置的所有标签 - JavaFx
【发布时间】:2018-03-31 16:18:29
【问题描述】:

我有一个刷新按钮,当我第一次单击它时,所有标签都在同一位置: 当我第二次单击它时,标签的位置正确:

initialize-method 不包含有关条形图的任何内容。

这里是controller-class的相关代码-sn-p:

@FXML
private NumberAxis barChart_yAxis;
@FXML
private BarChart<String, Number> barChart;

@FXML
void handleRefreshBarChart() {
barChart.getData().clear();
if (cbA.isSelected()) {
    XYChart.Series<String, Number> seriesA = new XYChart.Series<>();
    List<Integer> sales = statisticService.getSales('A');
    seriesA.setName("A");
    seriesA = createSerieBarChart(seriesA, sales);
    barChart.getData().add(seriesA);
}
if (cbB.isSelected()) {
    XYChart.Series<String, Number> seriesB = new XYChart.Series<>();
    List<Integer> sales = statisticService.getSales('B');
    seriesB.setName("B");
    seriesB = createSerieBarChart(seriesB, sales);
    barChart.getData().add(seriesB);
}
if (cbC.isSelected()) {
    XYChart.Series<String, Number> seriesC = new XYChart.Series<>();
    List<Integer> sales = statisticService.getSales('C');
    seriesC.setName("C");
    seriesC = createSerieBarChart(seriesC, sales);
    barChart.getData().add(seriesC);
}
}

private XYChart.Series<String, Number> createSerieBarChart(XYChart.Series<String, Number> serie, List<Integer> list) {
serie.getData().add(new XYChart.Data<>("Monday", list.get(0)));
serie.getData().add(new XYChart.Data<>("Tuesday", list.get(1)));
serie.getData().add(new XYChart.Data<>("Wednesday", list.get(2)));
serie.getData().add(new XYChart.Data<>("Thursday", list.get(3)));
serie.getData().add(new XYChart.Data<>("Friday", list.get(4)));
serie.getData().add(new XYChart.Data<>("Saturday", list.get(5)));
serie.getData().add(new XYChart.Data<>("Sunday", list.get(6)));
return serie;
}

【问题讨论】:

    标签: java javafx label bar-chart axis


    【解决方案1】:

    我通过在填充数据图表之前关闭动画来解决它

    barChart.setAnimated(false);
    

    【讨论】:

      【解决方案2】:
      setAnimated(false);
      

      过程数据...

      Platform.runLater(new Runnable() {
      
              @Override
              public void run() {
                  setAnimated(true);
              }
          });
      

      【讨论】:

      • 我不知道。但它有效 )) 这绝对是 FX 中的一个错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多