java - 按下场景生成器时选择的文件无效 FXML 错误

标签 java javafx fxml scenebuilder

我正在使用 Java FXML 和场景构建器 2.0 制作一个待办事项列表。尽管反复尝试网络上的可用资源,但当我双击 FXML 文件时,我无法摆脱此错误。我已尽我所能尝试了所有可能的方法,但似乎没有一个对我有用

enter image description here

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/

相关文章:

JavaFX8 FXML Controller 初始化方法未调用

java - 将按钮禁用属性绑定(bind)到 fxml 中的 TreeView 选择

java - 如何: Hibernate 3. xx条件查询

java - 从 imageview 触摸点,您可以调整 MAT 的大小以获得该点的颜色吗?

java - 为什么 JavaFX 应用程序任务管理器进程在关闭时不会结束

java - Android AsyncTask 的 JavaFX 等价物是什么?

java - 将重启手机的 Android 应用程序小部件 - 小部件没有做任何事情?

java - 如何调用 main 中的方法并告诉它运行?

JavaFX pane.getChildren().remove(child) 抛出 IllegalArgumentException

java - FXML 加载器不创建新实例