为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Qyouu 2021-10-28 15:36:16
我已经阅读并尝试了许多相关问题,最后在这里发布了一个问题。我正在尝试从登录窗口打开软件的主窗口。登录类是具有 main 方法的入口点。一切正常,直到我没有mainWindowController在mainWindow.fxml文件中声明。它给loadExceptionjavafx.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 文件中的控制器链接时,它会将我带到正确的控制器文件。所以我不明白为什么我会面临这个问题。任何帮助,将不胜感激。这是我的结构控制器类class MainWindowController {     @FXML    private AnchorPane main_layout;@FXML    void pinWindow(ActionEvent event) {        Stage s = (Stage) main_layout.getScene().getWindow();        s.setAlwaysOnTop(true);    }}
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

您的MainWindowContoller课程是package private(它没有访问修饰符)。这意味着您的 FXML 文件无法找到它,因为它在controller包外无法访问。

将类声明public class MainWindowController {改为。


附带说明:堆栈跟踪的顶行很少指向错误的实际原因。这通常就是应用程序执行停止的地方。

您需要在 StackTrace 中查找以“Caused By:”开头的行才能找到实际错误。


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信