2017-12-17 4 views
0

Ich habe 3 HBoxs in einer vbox und es zeigt perfekt zentriert, bis ich versuche, die vbox in den borderPane zu passen. Ich versuche, ein Menü über die Spitze der Szene zu gehen und den Rest meiner Etiketten und Textfelder in der Mitte zu haben, außer dass meine Vbox in die obere rechte Ecke geschoben wird, wenn sie in den Randbereich gelegt wird. Heres mein Code, danke im Voraus.VBOX wird aus der Szene geschoben, wenn sie in BorderPane gesetzt wird

//COURSE TITLE PANE 
    HBox courseTitlePane = new HBox(30); 
    courseTitlePane.getChildren().addAll(courseTitleLabel,courseTitleField); 
    courseTitlePane.setAlignment(Pos.CENTER); 
    // 
    //COURSE NUMBER PANE 
    HBox courseNumberPane = new HBox(30); 
    courseNumberPane.getChildren().addAll(courseNumberLabel,courseNumberField); 
    courseNumberPane.setAlignment(Pos.CENTER); 
    // 
    //COURSE CREDITS PANE 
    HBox creditsPane = new HBox(30); 
    creditsPane.getChildren().addAll(numOfCreditsLabel,numOfCreditsField); 
    creditsPane.setAlignment(Pos.CENTER); 
    // 
    //COURSE DESCRIPTION PANE 
    HBox descriptionPane = new HBox(30); 
    descriptionPane.getChildren().addAll(courseDescriptionLabel,courseDescriptionField); 
    descriptionPane.setAlignment(Pos.CENTER); 
    // 

    VBox pane = new VBox(30); 
    pane.getChildren().addAll(courseTitlePane,courseNumberPane,creditsPane,descriptionPane); 
    pane.setAlignment(Pos.CENTER); 

    BorderPane root = new BorderPane(); 
    root.getChildren().addAll(pane); 
    root.setTop(menuBar); 

    Scene scene = new Scene(root,800,500); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
+0

Mein bescheidener Rat an Sie ist - versuchen Scene Builder zu verwenden – zlakad

+2

Verwenden 'root.setCenter (Bereich)', 'nicht root.getChildren() hinzufügen (Bereich.) ' –

Antwort

0

@James_D Kommentar ist in der Tat richtig. Wenn Sie sich die BorderPane documentation anschauen, wird beschrieben, dass ein BorderPane "Kinder in den Positionen oben, links, rechts, unten und in der Mitte verteilt".

So wie Sie Ihre Menüleiste so eingestellt haben, dass sie oben im BorderPane mit root.setTop(menuBar); hinzugefügt wird, müssen Sie root.setCenter(pane); verwenden, um den mittleren Inhalt des BorderPane einzustellen. Hier

ist ein vollständiges Beispiel:

package sample; 

import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.control.Menu; 
import javafx.scene.control.MenuBar; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception{ 
     HBox courseTitlePane = new HBox(30); 
     Label courseTitleLabel = new Label("Course Title"); 
     TextField courseTitleField = new TextField(); 
     courseTitlePane.getChildren().addAll(courseTitleLabel,courseTitleField); 
     courseTitlePane.setAlignment(Pos.CENTER); 
     // 
     //COURSE NUMBER PANE 
     HBox courseNumberPane = new HBox(30); 
     Label courseNumberLabel = new Label("Course Number"); 
     TextField courseNumberField = new TextField(); 
     courseNumberPane.getChildren().addAll(courseNumberLabel,courseNumberField); 
     courseNumberPane.setAlignment(Pos.CENTER); 
     // 
     //COURSE CREDITS PANE 
     HBox creditsPane = new HBox(30); 
     Label numOfCreditsLabel = new Label("Credits"); 
     TextField numOfCreditsField = new TextField(); 
     creditsPane.getChildren().addAll(numOfCreditsLabel,numOfCreditsField); 
     creditsPane.setAlignment(Pos.CENTER); 
     // 
     //COURSE DESCRIPTION PANE 
     HBox descriptionPane = new HBox(30); 
     Label courseDescriptionLabel = new Label("Course Description"); 
     TextField courseDescriptionField = new TextField(); 
     descriptionPane.getChildren().addAll(courseDescriptionLabel, courseDescriptionField); 
     descriptionPane.setAlignment(Pos.CENTER); 
     // 

     VBox pane = new VBox(30); 
     pane.getChildren().addAll(courseTitlePane,courseNumberPane,creditsPane,descriptionPane); 
     pane.setAlignment(Pos.CENTER); 

     final Menu menu1 = new Menu("File"); 
     final Menu menu2 = new Menu("Options"); 
     final Menu menu3 = new Menu("Help"); 

     BorderPane root = new BorderPane(); 
     MenuBar menuBar = new MenuBar(); 
     root.setTop(menuBar); 
     menuBar.getMenus().addAll(menu1, menu2, menu3); 
     root.setCenter(pane); 
     primaryStage.setTitle("Some Generic Course Application"); 
     primaryStage.setScene(new Scene(root, 300, 275)); 
     primaryStage.show(); 
    } 


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