2017-03-24 3 views
1

Also das ist der Code ich habe, startet die GUI ich las auf einem früheren Post, dass es vielleicht mit der Tatsache zu tun hat, dass meine Wurzel vom Typ Group ist, aber ich war ' Ich bin in der Lage, herauszufinden, wie man andere Wege einführt. Der Inhalt innerhalb der GUI wird aufgebraucht, wenn ich versuche, den Hauptrahmen manuell zu verändern. Ich möchte, dass er zentriert bleibt und die Größe mit dem Rahmen ändert.Probleme mit javafx GUI-Hintergrund bleiben zentriert wenn Größe ändern

package view; 

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import singleton.MainModel; 

public class MainView extends Application { 
    @Override 
    public void start(Stage primaryStage) { 
     // Initialize mainController. 
     MainController mainController = new MainController(); 

     // Add the controller to the singleton. 
     MainModel.getModel().getMainData().setMainController(mainController); 

     // Initialize display components. 
     Group root = new Group(); 
     Scene scene = new Scene(root, 1280, 720); 

     // Add mainController. 
     root.getChildren().addAll(mainController); 

     // Pin the root to scene and display it. 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

     // Properly terminate the application if the user presses the "X" window button. 
     primaryStage.setOnCloseRequest(event -> { 
      mainController.closeApplication(); 
      stop(); 
     }); 

     // Set the title and make the application a fixed size. 
     primaryStage.setTitle("Visual Earth Modelling System"); 
     primaryStage.setResizable(true); 
     primaryStage.sizeToScene(); 



     // Add the stage to the singleton. 
     MainModel.getModel().getMainData().setMainStage(primaryStage); 

     // Go to the first screen. 
     mainController.goToLoginScreen(); 
    } 

    /** 
    * To destroy resources upon application close. Should be called in all instances of a properly closed JavaFX application. 
    */ 
    @Override 
    public void stop() { 
     if (MainModel.getModel().getNetworkData().isHandlerSet()) 
      MainModel.getModel().getNetworkData().closeHandler(); 
    } 

    /** 
    * This method is actually not used in a correctly deployed JavaFX application. Instead, the start method above is called. This main serves as a fallback in case of improper configuration. 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 
} 

enter image description here

Antwort

0

ersetzen Group mit StackPane. StackPane legt standardmäßig die Ausrichtung von Kindern auf die Mitte fest. Um sicherzugehen, dass die Ausrichtung korrekt ist, können Sie sie explizit durch StackPane.setAlignment(Pos value) setzen.

StackPane root = new StackPane(); 
root.setAlignment(Pos.CENTER); 
root.getChildren().add(mainController); 
Scene scene = new Scene(root, 1280, 720); 
+0

danke es funktionierte – JJC

Verwandte Themen