你好,我在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();
}
});
}
这是图像:
任何指导吗?
答案 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;
}