我已经阅读并尝试了许多相关问题,最后在这里发布了一个问题。我正在尝试从登录窗口打开软件的主窗口。登录类是具有 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:”开头的行才能找到实际错误。
添加回答
举报
0/150
提交
取消