JavaFX折线图引发强制转换异常

JavaFX折线图引发强制转换异常,java,exception,javafx,charts,Java,Exception,Javafx,Charts,我试图在我的窗口中放置另一个图表,但我遇到了强制转换异常。我有一个条形图正在工作,但当我点击按钮向线形图添加数据时,它抛出了一个异常。 代码如下: @FXML private BarChart<String, Double> barChart; @FXML private CategoryAxis xAxis; @FXML private NumberAxis yAxis; @FXML private LineChart<Double, Double> lineChart

我试图在我的窗口中放置另一个图表,但我遇到了强制转换异常。我有一个条形图正在工作,但当我点击按钮向线形图添加数据时,它抛出了一个异常。 代码如下:

@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);
}
    <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>
我需要这个功能,因为我正试图将两个图表堆叠在一起。柱状图和折线图。我试图填充折线图的数据不是最终数据。我得到了一个列表,其中包含我想在折线图上显示的数据

    <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>
编辑。 这里是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>

    <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>


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

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

    <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>

请提供一个示例来演示异常中的问题(代码片段不够),看起来您需要将xValues强制转换为String。或者您可以更改
CategoryAxis linexAxis至<代码>数字轴线X轴