我正在使用 Java FXML 和场景构建器 2.0 制作一个待办事项列表。尽管反复尝试网络上的可用资源,但当我双击 FXML 文件时,我无法摆脱此错误。我已尽我所能尝试了所有可能的方法,但似乎没有一个对我有用
FXML 代码是:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.DialogPane?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.DatePicker?>
<DialogPane
fx:controller="todolist.DialogController" xmlns:fx="http://javafx.com/fxml"
>
<headerText>
</headerText>
<content>
<GridPane vgap="10" hgap="10">
<Label text="Short Description:" GridPane.rowIndex="0" GridPane.columnIndex="0"/>
<TextField fx:id="shortDescriptionField" GridPane.rowIndex="0" GridPane.columnIndex="1"/>
<Label text="Details:" GridPane.rowIndex="1" GridPane.columnIndex="0"/>
<TextArea fx:id="detailsArea" GridPane.rowIndex="1" GridPane.columnIndex="1"
/>
<Label text="Deadline:" GridPane.rowIndex="2" GridPane.columnIndex="0"/>
<DatePicker fx:id="deadlinePicker" GridPane.rowIndex="2" GridPane.columnIndex="1"/>
</GridPane>
</content>
</DialogPane>
编辑:按下时显示详细信息:
java.io.IOException: javafx.fxml.LoadException:
/C:/Users/Pc%20Planet/Desktop/todolist/src/todolist/todoitemdialog.fxml
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:92)
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:80)
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:95)
at com.oracle.javafx.scenebuilder.kit.editor.EditorController.updateFxomDocument(EditorController.java:2370)
at com.oracle.javafx.scenebuilder.kit.editor.EditorController.setFxmlTextAndLocation(EditorController.java:655)
at com.oracle.javafx.scenebuilder.app.DocumentWindowController.loadFromFile(DocumentWindowController.java:386)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.performOpenFiles(SceneBuilderApp.java:579)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleOpenFilesAction(SceneBuilderApp.java:447)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleLaunch(SceneBuilderApp.java:427)
at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStartGeneric(AppPlatform.java:139)
at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStart(AppPlatform.java:106)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.start(SceneBuilderApp.java:371)
at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837)
at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
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.access$300(WinApplication.java:39)
at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
at java.lang.Thread.run(Thread.java:744)
Caused by: javafx.fxml.LoadException:
/C:/Users/Pc%20Planet/Desktop/todolist/src/todolist/todoitemdialog.fxml
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)
at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2864)
at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2708)
at javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2677)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2517)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:89)
... 22 more
Caused by: java.lang.ClassNotFoundException: javafx.scene.control.DialogPane
at java.lang.ClassLoader.findClass(ClassLoader.java:530)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2932)
at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2921)
at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2862)
... 27 more
最佳答案
DialogPane 是在最初的 JavaFX 2 版本之后创建的类,在某些早期的 JavaFX 版本中不存在(显然是支持您正在使用的 SceneBuilder 安装的版本)。
您应该使用支持您尝试使用的源文件的现代软件和工具。
经验证,您的 FXML 在 SceneBuilder 17 和 18 上加载不会出现问题,可从 gluon 获取。 .
关于java - 按下场景生成器时选择的文件无效 FXML 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73056996/