在过去的一周左右,我正在将我的JavaFX项目从Java 8迁移到Java 11,JavaFX 17。我也从Scenebuilder 8.5迁移到Scenebuilder JavaFX版本:20.0.1.总的来说,它相当顺利,但是我面临着一个令人困惑的错误,我似乎无法解决。
Instances of `javafx.scene.chart.LineChart` cannot be created by FXML loader.
当我将项目的Java版本更改为Java 11,并将JavaFX 17库导入到项目中时,我在项目中使用的LineChart
开始在FXML文档文件中抛出一个我以前从未见过的错误。这是一个330行的文件,所以我只包括相关的部分:
<?import javafx.scene.chart.CategoryAxis?>
<?import javafx.scene.chart.LineChart?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.effect.DropShadow?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Line?>
<LineChart fx:id="chartDashboardLineChart" layoutX="5.0" layoutY="10.0" prefHeight="233.0" prefWidth="870.0" title="Monthly Sales">
<xAxis>
<CategoryAxis side="BOTTOM" fx:id="x" />
</xAxis>
<yAxis>
<NumberAxis fx:id="y" side="LEFT" />
</yAxis>
</LineChart>
错误显示在声明LineChartchartDashboardLineChart的行下。还有两个新的错误,内容如下:类javafx.scene.chart.LineChart
不支持属性xAxis
(yAxis
也是如此)。这两个错误似乎比上面的FXML Loader错误更令人担忧。我还将包括我的项目中的相关代码行,尽管我认为错误更有可能存在于FXML文档中。下面是Java代码(分为两个不同的类:Class: LineCharts.java
还有另一个类,这个类太大了,不能完整地发布,叫做DashboardController.java,下面是DashboardController类的相关部分:
@FXML
private LineChart<?, ?> chartDashboardLineChart;
@FXML
private CategoryAxis x;
@FXML
private NumberAxis y;
LineCharts LC = new LineCharts();
//later on in the initialize area of the code
//Call the initializeLineChart method and pass the line chart as an argument
LC.generateDashboardLineChart(chartDashboardLineChart);
我尝试了很多方法来解决这个问题,但没有成功。这似乎是一个罕见的问题,因为有很少或没有信息,我可以在网上找到。
我感谢任何帮助或任何理论,是什么导致我的问题,以及如何解决它。谢谢你,谢谢!
3条答案
按热度按时间5lhxktic1#
我无法通过运行应用程序或在SceneBuilder中复制这一点。
验证以下代码在您的环境中是否有效。
测试环境
执行环境:
SceneBuilder版本(从“关于”屏幕):
测试申请
iswrvxsc2#
我可以使用MacOS 12.6、JDK 17.0.8、SceneBuilder 19、此 Status Application 或此Test Application以及NetBeans 18(带有提到here和here的JavaFX 2 v1.37插件)重现这一发现。由于插件已经过时,停用它是一个简单的解决办法。这样做消除了(虚假的)错误和警告。
参考上面引用的 line-chart.fxml:
ecfsfe2w3#
这是一个非常奇怪的错误;虽然错误仍然显示在FXML文档中的netbeans(13)上,但似乎当我运行该项目时,折线图无论如何都能正常工作。下面是一个屏幕截图,显示了netbeans的错误:
下面是一个图像,显示它运行并显示折线图,无论:!
感谢所有提出建议的人,我非常感激。我仍然不明白为什么错误会显示在FXML文档中,但最终它似乎并没有影响我的项目。