JavaFx载入资源不显示界面

问题描述

  • 今天使用javafx 构建 程序时, 在界面设置了一张图片资源,但是双击程序,不显示主界面,在cmd下发现提示 无Preloader.class ,我在网络翻遍了狠毒资料还是没有发现,很多资料都说不需要写这个类类继承,的确也是这样,不利用资源的情况下是不需要设置这个类的 ,但是建议还是加上,
package GameApplication;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("TractorGame.fxml"));
            Scene scene = new Scene(root);
            scene.getStylesheets().add(
                    getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            initScene(root);
            primaryStage.setTitle("拖拉机小游戏");
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    /*
     * 初始化主要场景
     */
    private void initScene(Parent root) {
        ImageView imageNode = (ImageView) root.lookup("#myimage");
        imageNode.setImage(new Image("resouces/标题画面.jpg"));
        imageNode.setVisible(true);
    }

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

  • 加上Preloader
package GameApplication;

import javafx.application.Preloader;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class prepare extends Preloader{

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("TractorGame.fxml"));
        ImageView imageNode = (ImageView) root.lookup("#myimage");
        imageNode.setImage(new Image("resouces/标题画面.jpg"));
        imageNode.setVisible(true);
    }

}

  • 这样写的目地是由于类加载器架构的写法,作者写架构实际采用;

你可能感兴趣的:(JavaFx载入资源不显示界面)