当前位置: 首页 > 知识库问答 >
问题:

JavaFX折线图抛出强制转换异常

柴霖
2023-03-14

我正试图在我的窗口中放另一张图表,但我遇到了演员例外。我有一个条形图正在工作,但当我单击按钮将数据添加到线形图时,它会抛出一个异常。下面是代码:

@FXML
private BarChart<String, Double> barChart;
@FXML
private CategoryAxis xAxis;
@FXML
private NumberAxis yAxis;
@FXML
private LineChart<Double, Double> lineChart;
@FXML
private CategoryAxis linexAxis;
@FXML
private NumberAxis lineyAxis;

public void createChart(ActionEvent event) {} //this method creates and populates barChart

public void loadLineChart(ActionEvent event) {

    linexAxis.setLabel("Wind speed [m/s]");
    lineyAxis.setLabel("Probability [%]");

    ObservableList<XYChart.Series<Double, Double>> lineChartData = FXCollections.observableArrayList();

    LineChart.Series<Double, Double> series1 = new LineChart.Series<Double, Double>();
    series1.setName("Series 1");
    series1.getData().add(new XYChart.Data<Double, Double>(0.0, 1.0));
    series1.getData().add(new XYChart.Data<Double, Double>(1.2, 1.4));
    series1.getData().add(new XYChart.Data<Double, Double>(2.2, 1.9));
    series1.getData().add(new XYChart.Data<Double, Double>(2.7, 2.3));
    series1.getData().add(new XYChart.Data<Double, Double>(2.9, 0.5));

    lineChartData.add(series1);

    lineChart.setData(lineChartData);

    lineChart.getData().add(series1);
}

以下是堆栈跟踪:

Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
at javafx.scene.chart.CategoryAxis.calculateRequiredSize(CategoryAxis.java:382)
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:935)
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:1087)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Parent.layout(Parent.java:1093)
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$29(Toolkit.java:398)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:397)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:424)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:518)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:498)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:491)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$403(QuantumToolkit.java:319)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139)
at java.lang.Thread.run(Thread.java:748)

我需要这个功能,因为我正在尝试将两个图表堆叠在一起。柱状图和折线图。我试图填充折线图的数据不是最终数据。我得到了一个包含数据的列表,我想在折线图上展示这些数据。

编辑这是fxml。

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.chart.BarChart?>
<?import javafx.scene.chart.CategoryAxis?>
<?import javafx.scene.chart.LineChart?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
    <BarChart fx:id="barChart" alternativeColumnFillVisible="true" layoutX="31.0" layoutY="64.0" prefHeight="502.0" prefWidth="767.0">
        <xAxis>
            <CategoryAxis side="BOTTOM" fx:id="xAxis" />
        </xAxis>
        <yAxis>
            <NumberAxis fx:id="yAxis" side="LEFT" />
        </yAxis>
    </BarChart>
    <Button layoutX="420.0" layoutY="17.0" mnemonicParsing="false" onAction="#loadLineChart" text="Load chart" />
    <Button layoutX="24.0" layoutY="17.0" mnemonicParsing="false" onAction="#createChart" text="LOAD" />

  <LineChart fx:id="lineChart" layoutX="52.0" layoutY="571.0" prefHeight="334.0" prefWidth="500.0">
    <xAxis>
      <CategoryAxis fx:id="linexAxis" side="BOTTOM" />
    </xAxis>
    <yAxis>
      <NumberAxis fx:id="lineyAxis" side="LEFT" />
    </yAxis>
  </LineChart>
</children>

共有1个答案

谭仰岳
2023-03-14

您需要将 x 值更改为字符串。

series1.getData().add(new XYChart.Data<Double, Double>(Double.toString(0.0), 1.0));
//Do the rest of the x-values here!

或替换

CategoryAxis linexAxis;

具有

NumberAxis linexAxis;
 类似资料:
  • 例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g

  • 问题内容: 我的JSF页面中有p:selectOneMenu,当我运行JSF页面时,我从Converter类收到以下异常。 我该如何解决这个问题? 我在实体类中有以下内容 EmployeeConverter类 并在jsf页面中 更新1 修改的转换器方法 更新2 问题答案: 用您的方法,您无法达到自己的价值。在这里,您将收到,因此您必须将其转换为(可能必须实现使用Service locator 加载

  • 问题内容: 这是我尝试在Liferay Portal 6.0.6中运行portlet时得到的堆栈跟踪。 任何人都知道发生了什么事吗? 问题答案: 问题已经解决了。如上所述,问题是100%的类路径问题。尽管我用jarscan扫描了所有目录,但我找不到任何冗余。事实证明,我的同事使用了许多不必要的JAR,将它们不必要地添加到了我的WAR中。 现在正在工作! 谢谢大家;-)

  • 问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何

  • 问题内容: 我是Java的新手,正在尝试理解为什么第一个代码片段不会导致此异常,而第二个代码片段会导致此异常。由于在两种情况下都将字符串数组传递到Arrays.asList中,所以两个代码片段都不应该产生异常还是不产生异常? 第一个代码段(毫无例外): 第二段(导致上述异常): 如果相关,我正在Eclipse Helios中使用JavaSE 1.6。 问题答案: 对我来说(使用Java 1.6.0