我在 fxml 文件中声明控制器时出错

我已经阅读并尝试了许多相关问题,最后在这里发布了一个问题。我正在尝试从登录窗口打开软件的主窗口。登录类是具有 main 方法的入口点。一切正常,直到我没有mainWindowController在mainWindow.fxml文件中声明。它给loadException


javafx.fxml.LoadException: 

file:/C:/Users/PIU-PDMA/Documents/GitHub/ExamSystem/dist/run1388756810/ExamSoft.jar!/view/mainWindow.fxml:10

这是我loginController的方法(单击登录按钮时的方法)


@FXML

    void makeLogin(ActionEvent event) {


        FXMLLoader fXMLLoader;

        Parent root;

        Scene scene;

        try {

            root = FXMLLoader.load(getClass().getResource("/view/mainWindow.fxml"));


            Stage stage = new Stage();

            stage.setTitle("Main Window");

            stage.setScene(new Scene(root));

            stage.setMaximized(true);

            stage.show();

        } catch (Exception e) {

            Logger logger = Logger.getLogger(getClass().getName());

            logger.log(Level.SEVERE, "Failed to create new Window.", e);

            JOptionPane.showMessageDialog(null, "Error ");

        }



    }

根据我的研究,如果我们使用getResourcemethod ,我们应该使用前导斜线,如果我们使用getClassLoader我们不会在路径中使用前导斜线


getClass().getResource("/view/login.fxml")); // correct with slash (/)

getClass().getClassLoader().getResource("view/login.fxml")); // correct without slash (/)

当我按下ctlr并单击 fxml 文件中的控制器链接时,它会将我带到正确的控制器文件。所以我不明白为什么我会面临这个问题。任何帮助,将不胜感激。这是我的结构

http://img1.mukewang.com/617a5330000134ce03500322.jpg

控制器类


class MainWindowController {

     @FXML

    private AnchorPane main_layout;


@FXML

    void pinWindow(ActionEvent event) {

        Stage s = (Stage) main_layout.getScene().getWindow();

        s.setAlwaysOnTop(true);

    }


}


Qyouu
浏览 207回答 1
1回答

RISEBY

您的MainWindowContoller课程是package private(它没有访问修饰符)。这意味着您的 FXML 文件无法找到它,因为它在controller包外无法访问。将类声明public class MainWindowController {改为。附带说明:堆栈跟踪的顶行很少指向错误的实际原因。这通常就是应用程序执行停止的地方。您需要在 StackTrace 中查找以“Caused By:”开头的行才能找到实际错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java