2016-05-17 9 views
0

IntellijプラットフォームのMySQLデータベースを使用してエリアチャートを作成しようとしています。 mysqlデータベースからAreaチャートに大気データを表示したい。 これは、エリアチャート方式のコードです:mysql in java fxmlのエリアチャート

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) 

あなたはString表現のために使用されている、あなたのチャートのX軸としてれるCategoryAxisを使用している、とあなたは、このようにあなたが例外を投げてきた、それまでの整数値を追加しようとしています。

あなたのロジックに応じてrs.getInt( "Year_1")を文字列に解析することがおそらく必要です。

は、Oracleチャートチュートリアルの例に従うことができます: http://docs.oracle.com/javafx/2/charts/line-chart.htm

+0

Thanxが表示されます。 Integer to StringとCodeは完全に機能しています。 –