2016-05-17 35 views
0

我想在Intellij平台中用MySQL数据库创建区域图。 我想从MySQL数据库显示面积图中的大气数据。 这是区域图方法代码:在java fxml中使用mysql的区域图

AreaChart areaChart; 
public void contAreaTabM(Event event) throws ClassNotFoundException, SQLException, ClassCastException { 

    //ObservableList<XYChart.Series<Integer, Double>> answer = FXCollections.observableArrayList(); 
    XYChart.Series<Integer, Double> temperature = new XYChart.Series<>(); 
    XYChart.Series<Integer, Double> pressure = new XYChart.Series<>(); 
    XYChart.Series<Integer, Double> humidity = new XYChart.Series<>(); 
    temperature.setName("Temperature"); 
    pressure.setName("Pressure"); 
    humidity.setName("Humidity"); 

    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con= DriverManager.getConnection("jdbc:mysql://localhost/test","root",""); 
    //PreparedStatement pst=con.prepareStatement("Select Username, Password from login where username = ?"); 
    String query = "Select Year_1, Temperature, Pressure, Humidity FROM atomdata"; 
    Statement stmt = con.createStatement(); 

    //pst.setString(1, editUsername.getText()); 
    ResultSet rs = stmt.executeQuery(query); 
    while(rs.next()) { 
      temperature.getData().add(new XYChart.Data<>(rs.getInt("Year_1"), rs.getDouble("Temperature"))); 
      pressure.getData().add(new XYChart.Data<>(rs.getInt("Year_1"), rs.getDouble("Pressure"))); 
      humidity.getData().add(new XYChart.Data<>(rs.getInt("Year_1"), rs.getDouble("Humidity"))); 
    } 
    //answer.addAll(Temperature, Pressure, Humidity); 
    areaChart.getData().addAll(temperature, pressure, humidity); 
} 

请帮我解决这个查询。 当我运行应用它表明这个错误

Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
at javafx.scene.chart.CategoryAxis.calculateRequiredSize(CategoryAxis.java:378) 
at javafx.scene.chart.CategoryAxis.autoRange(CategoryAxis.java:363) 
at javafx.scene.chart.Axis.computePrefHeight(Axis.java:577) 
at javafx.scene.Parent.prefHeight(Parent.java:924) 
at javafx.scene.layout.Region.prefHeight(Region.java:1435) 
at javafx.scene.chart.XYChart.layoutChartChildren(XYChart.java:687) 
at javafx.scene.chart.Chart$1.layoutChildren(Chart.java:94) 
at javafx.scene.Parent.layout(Parent.java:1076) 
at javafx.scene.Parent.layout(Parent.java:1082) 
at javafx.scene.Parent.layout(Parent.java:1082) 
at javafx.scene.Parent.layout(Parent.java:1082) 
at javafx.scene.Parent.layout(Parent.java:1082) 
at javafx.scene.Parent.layout(Parent.java:1082) 
at javafx.scene.Scene.doLayoutPass(Scene.java:552) 
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2397) 
at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:314) 
at com.sun.javafx.tk.Toolkit$$Lambda$151/250776792.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:313) 
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:340) 
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:525) 
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:505) 
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$400(QuantumToolkit.java:334) 
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$42/1119034921.run(Unknown Source) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101) 
at com.sun.glass.ui.win.WinApplication$$Lambda$38/636526176.run(Unknown Source) 
at java.lang.Thread.run(Thread.java:745) 
+0

请添加行号,或导致错误高亮线。 –

+0

没有高光线。其中显示错误 –

回答

0

首先,这将是最好添加完整的代码片段,以便更好地理解您的问题。根据你的异常

Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
at javafx.scene.chart.CategoryAxis.calculateRequiredSize(CategoryAxis.java:378) 
at javafx.scene.chart.CategoryAxis.autoRange(CategoryAxis.java:363) 
at javafx.scene.chart.Axis.computePrefHeight(Axis.java:577) 

你正在使用的CategoryAxis为X轴为图表,其用于字符串表示形式,你想整数值添加到它这样你施放例外。

可能你需要做的是根据你的逻辑解析你的rs.getInt(“Year_1”)为一个字符串。

你可以按照甲骨文图表实例教程: http://docs.oracle.com/javafx/2/charts/line-chart.htm

+0

Thanx您的建议。我已将整数更改为字符串,并且代码完美无缺。 –