条形图显示不正确

时间:2019-10-22 15:56:10

标签: javafx

你好,我在JavaFx中有一个Barchart,直接在initialize方法中加载时,数据显示很好,但是在加载MouseEvent时,Date标签不能正确显示。我把一个最小化的例子放在这里。

这是我在IncidentesController中的代码

    @FXML private ComboBox<String> solicitudindc;
          @FXML private JFXButton generarind;
          @FXML private BarChart <String,Integer> indicadorsoporte;
          @FXML private  CategoryAxis fechas;
          @FXML private NumberAxis cantidades;


            public void generaindicador() {
            String Bd="jdbc:sqlserver://DESKTOP- 
            8PJDQNJ:1433;databaseName=QUORA";
            String Usuario="myuser";
            String Pass="mypass";
            String Query= "SELECT FECHA_EJECUTADA ,  COUNT(PRIORIDAD) AS CANTIDAD FROM RINCIDENTES WHERE PRIORIDAD='ALTA' GROUP BY FECHA_EJECUTADA ORDER BY FECHA_EJECUTADA ASC"; 
            String Query2= "SELECT FECHA_EJECUTADA ,  COUNT(PRIORIDAD) AS CANTIDAD FROM RINCIDENTES WHERE PRIORIDAD='MEDIA' GROUP BY FECHA_EJECUTADA ORDER BY FECHA_EJECUTADA ASC"; 
            XYChart.Series<String,Integer> DatosPrioridad = new Series<String,Integer> ();
            XYChart.Series<String,Integer> DatosPrioridad2 = new Series<String,Integer> ();

            Connection Conexiontabla = null;
            try {
                 ............conection code...........
                while (rs.next()) {
                    String y=rs.getString("FECHA_EJECUTADA");
                    int a=rs.getInt("CANTIDAD");
                    DatosPrioridad.getData().add(new XYChart.Data<>(y,a) );
                }
                indicadorsoporte.getData().add(DatosPrioridad);
                DatosPrioridad.setName("PRIORIDAD ALTA");
               }catch(SQLException e) {
                e.printStackTrace();
               }


             try {
               ............conection code...........
                while (rss.next()) {
                    String x=rss.getString("FECHA_EJECUTADA");
                    int z=rss.getInt("CANTIDAD");
                    DatosPrioridad2.getData().add(new XYChart.Data<>(x,z) );

                }
                indicadorsoporte.getData().add(DatosPrioridad2);
                DatosPrioridad2.setName("PRIORIDAD MEDIA");
                fechas.setLabel("Fechas");
                cantidades.setLabel("Cantidades");
            }catch(SQLException e) {
                e.printStackTrace();
            }
      }

如果组合框的值为"REPORTE DE INCIDENTES",我将这样加载条形图:

public void generaincidentes() {
     generarind.setOnMouseClicked(e->{
          if(solicitudindc.getSelectionModel().getSelectedItem().toString().equals("REPORTE DE INCIDENTES")) {
              generaindicador();
          }
          });  
  }

这是图像:

当我直接在initialize方法中加载时: enter image description here

当我在组合框中选择选项以加载Barchart时: enter image description here

任何指导吗?

1 个答案:

答案 0 :(得分:0)

这对我有用!

@SuppressWarnings("unchecked")
public ObservableList<XYChart.Series<String, Integer>>
  getdatosbarchart() {
        String Bd="jdbc:sqlserver://DESKTOP-8PJDQNJ:1433;databaseName=QUORA";
        String Usuario="sa";
        String Pass="milkas87";
        String Query= "SELECT FECHA_EJECUTADA ,  COUNT(PRIORIDAD) AS CANTIDAD FROM RINCIDENTES WHERE PRIORIDAD='ALTA'  GROUP BY FECHA_EJECUTADA ORDER BY FECHA_EJECUTADA ASC"; 
        String Query2= "SELECT FECHA_EJECUTADA ,  COUNT(PRIORIDAD) AS CANTIDAD FROM RINCIDENTES WHERE PRIORIDAD='MEDIA' GROUP BY FECHA_EJECUTADA ORDER BY FECHA_EJECUTADA ASC"; 
        ObservableList<XYChart.Series<String, Integer>> data =FXCollections.observableArrayList();
        Series<String, Integer> as = new Series<>();
        Series<String, Integer> bs = new Series<>();
        Connection Conexiontabla = null;
        try {
            Conexiontabla=DriverManager.getConnection(Bd, Usuario, Pass);
            PreparedStatement ps =Conexiontabla.prepareStatement(Query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                String y=rs.getString("FECHA_EJECUTADA");
                int a=rs.getInt("CANTIDAD");
                as.getData().add(new XYChart.Data<>(y,a) ); 
            }
            as.setName("PRIORIDAD ALTA");
         }catch(SQLException e) {
            e.printStackTrace();
         }
         try {
                Conexiontabla=DriverManager.getConnection(Bd, Usuario, Pass);
                PreparedStatement pd =Conexiontabla.prepareStatement(Query2);
                ResultSet rss = pd.executeQuery();
            while (rss.next()) {
                String y=rss.getString("FECHA_EJECUTADA");
                int a=rss.getInt("CANTIDAD");
                bs.getData().add(new XYChart.Data<>(y,a) );
            }
            bs.setName("PRIORIDAD MEDIA");
            fechas.setLabel("Fechas");
            cantidades.setLabel("Cantidades");
        }catch(SQLException e) {
            e.printStackTrace();
        }
         data.addAll(as,bs);
        return data;    
  }

  public BarChart<String, Integer>crearbarchart() {
    indicadorsoporte.setData(getdatosbarchart());
    indicadorsoporte.setTitle("Soportes realizados en el Mes");
    return indicadorsoporte;
}