瀏覽代碼

Splashscreen für die Zeit während der FXMLLoader arbeitet erstellt.

hapi
Johannes 10 年之前
父節點
當前提交
afa282b4ca
共有 1 個檔案被更改,包括 87 行新增10 行删除
  1. +87
    -10
      src/main/java/de/uniluebeck/mi/projmi6/Main.java

+ 87
- 10
src/main/java/de/uniluebeck/mi/projmi6/Main.java 查看文件

@@ -2,33 +2,110 @@ package de.uniluebeck.mi.projmi6;


import de.uniluebeck.mi.projmi6.controller.MainController; import de.uniluebeck.mi.projmi6.controller.MainController;
import javafx.application.Application; import javafx.application.Application;
import javafx.concurrent.Task;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Paint;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.StageStyle;



public class Main extends Application { public class Main extends Application {


/**
* Cuz building the GUI from FXML is a bit costly,
* it's done from its own thread.
*/
private Task<Parent> loadMainWindowTask = new Task<Parent>(){

@Override
protected Parent call() throws Exception {
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getClassLoader().getResource("main.fxml"));

MainController mainController = new MainController();
fxmlLoader.setControllerFactory(mainController.getControllerFactory());

Parent root = fxmlLoader.load();

return root;
}
};

/**
* The applications logo (an owl).
*/
private Image icon = new Image("icon.png", true);


@Override @Override
public void start(Stage primaryStage) throws Exception {
public void start(Stage primaryStage) {
System.out.println(getClass().getClassLoader().getResource("").toExternalForm()); System.out.println(getClass().getClassLoader().getResource("").toExternalForm());


FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getClassLoader().getResource("main.fxml"));
primaryStage.getIcons().add(icon);

Stage loadingMessage = createLoadWindow();


MainController mainController = new MainController();
fxmlLoader.setControllerFactory(mainController.getControllerFactory());


primaryStage.getIcons().add(new Image("icon.png"));
Parent root = fxmlLoader.load();
loadMainWindowTask.setOnSucceeded(event -> {
Parent root = loadMainWindowTask.getValue();

loadingMessage.close();

primaryStage.setTitle("KIS Gruppe 06");
primaryStage.setScene(new Scene(root, 1000, 800));
primaryStage.show();
});
Thread thread = new Thread(loadMainWindowTask);
thread.setDaemon(true);
thread.start();



primaryStage.setTitle("KIS Gruppe 06");
primaryStage.setScene(new Scene(root, 1000, 800));
primaryStage.show();
} }


/**
* Creates a small, undecorated stage for
* showing a splash-screen to the user.
*
* @return the splash screen
*/
public Stage createLoadWindow(){
Text kis = new Text("KIS");
kis.setFont(Font.font(50));

Text gruppe6 = new Text("Gruppe 06");
gruppe6.setFont(Font.font(20));

VBox root = new VBox(gruppe6, new ImageView(icon), kis);
root.setSpacing(20);
root.setAlignment(Pos.CENTER);
Scene scene = new Scene(root, 400, 400);

Stage stage = new Stage(StageStyle.UNDECORATED);
stage.getIcons().add(icon);
root.setBackground(new Background(new BackgroundFill(Paint.valueOf("#0093D1"), CornerRadii.EMPTY, Insets.EMPTY)));
stage.setScene(scene);
stage.show();

return stage;
}


/**
* Applications entry point.
*
* @param args Commandline parameters
*/
public static void main(String[] args) { public static void main(String[] args) {
launch(args); launch(args);
} }


Loading…
取消
儲存