未设置 fxml 的位置[重复]

问题描述 投票:0回答:1

我在运行程序时遇到问题。我刚刚将整个项目分成了更多包,以便更有条理。当我尝试运行时,问题是:位置未设置。 FXML 文件的名称是正确的,该文件位于目录

resources
,包
FXMLs
中。我尝试使用所有路径运行该程序,但仍然遇到相同的错误。我什至尝试从包中取出 FXML 文件,但仍然遇到相同的错误。

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class HelloApplication extends Application {

    @Override
    public void start(Stage stage) {
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("welcome.fxml"));
            Scene scene = new Scene(fxmlLoader.load(), 600, 800);
            stage.setTitle("Forest App");
            stage.setScene(scene);
            stage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch();
    }
}

这是堆栈跟踪:java.lang.IllegalStateException:未设置位置。 在 javafx.fxml@21-ea/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2556) 在javafx.fxml@21-ea/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2531) 在 com.mslaus.forestapp/com.mslaus.forestapp.HelloApplication.start(HelloApplication.java:15) 在 javafx.graphics@21-ea/ com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(启动 cherImpl.java:839) 在 javafx.graphics@21-ea/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImp l.java:483) 在 javafx.graphics@21-ea/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456) 在 java.base/java.security.AccessController.doPrivileged(AccessController.java:400) 在 javafx.graphics@21-ea/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:455) 在 javafx.graphics@21-ea/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 在 javafx.graphics@21-ea/com.sun.glass.ui.win.WinApplication._runLoop(本机方法) 在 javafx.graphics@21-ea/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:183) 在 java.base/java.lang.Thread.run(Thread.java:1583)

java javafx fxml
1个回答
0
投票

您应该根据项目现在的包结构来修改 FXML 文件的位置。

FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("/com/mslaus/forestapp/FXMLs/welcome.fxml"));
© www.soinside.com 2019 - 2024. All rights reserved.