Tripal
Tripal

Reputation: 1

I'm trying to figure out how to make my VBox inside a BorderPane expand with the BorderPane/Stage, but still stay within a certain bounds

I am trying to figure out how to make my VBox, only go to the size of 300 pixel's wide, but i would like to have it at say 250 pixels wide when the program is initialized, then when the user clicks full screen, I want it to expand, but not necessarily with the entire space it would have. I want it to only go to 300 pixels (and have the 3 buttons inside do the same thing) but I'm not sure how to do that. I'm having trouble determining PrefSize and CompSize actual meanings and uses. Any help would be great.

I am also having kind of the same problem with the Label, inside the HBox, that is inside a SplitPane, that is inside a BorderPane. Any explanation of why what you are suggesting will work, will help me with future problems like this. Thank you

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class MainStarUI extends Application {





    @Override
    public void start(Stage primaryStage){


        MenuBar mainMenuOne = addMenuBar();
        VBox leftVBoxOne = addVbox();
        //AnchorPane midPaneOne = addAnchorPane();
        //HBox topHBoxOne = addHBox();
        SplitPane midSplitPane = addSplitPane();

        BorderPane mainPane = new BorderPane();
        mainPane.setTop(mainMenuOne);
        mainPane.setLeft(leftVBoxOne);
        mainPane.setCenter(midSplitPane);

        primaryStage.setMinWidth(1440);
        primaryStage.setMinHeight(900);
        Scene mainScene = new Scene(mainPane);
        primaryStage.setScene(mainScene);
        primaryStage.show();

    }

    public MenuBar addMenuBar(){
        Menu menuOne = new Menu("File");
        Menu menuTwo = new Menu("Edit");
        Menu menuThree = new Menu("Help");
        Menu menuFour = new Menu("Exit");

        MenuItem menuItemOne = new MenuItem("File");
        MenuItem menuItemTwo = new MenuItem("Open");
        MenuItem menuItemThree = new MenuItem("Exit");

        menuOne.getItems().add(menuItemOne);
        menuOne.getItems().add(menuItemTwo);
        menuFour.getItems().add(menuItemThree);

        MenuBar mainMenuOne = new MenuBar();

        mainMenuOne.getMenus().add(menuOne);
        mainMenuOne.getMenus().add(menuTwo);
        mainMenuOne.getMenus().add(menuThree);
        mainMenuOne.getMenus().add(menuFour);

        mainMenuOne.maxHeight(25);
        mainMenuOne.minHeight(25);


        return mainMenuOne;

    }

    public VBox addVbox(){
        VBox leftVBox = new VBox();
        leftVBox.setMinWidth(300);
        leftVBox.setPrefWidth(300);

        leftVBox.setPadding(new Insets(15));
        leftVBox.setSpacing(20);
        leftVBox.setStyle("-fx-background-color: #336699;");

        Button firstButton = new Button("Ships, Components, Items & Weaponry");
        firstButton.setMinSize(270, 270);
        firstButton.setMaxSize(270, 270);

        Button secondButton = new Button("Trading, Mining, Refining & Commodities");
        secondButton.setMinSize(270, 270);
        secondButton.setMaxSize(270,270);

        Button thirdButton = new Button("Star Systems, Planets, Moons & Locations");
        thirdButton.setMinSize(270,270);
        thirdButton.setMaxSize(270, 270);

        leftVBox.getChildren().addAll(firstButton, secondButton, thirdButton);

        return leftVBox;
    }


    public HBox addHBox(){

        Image logoImage = new Image("SCImages/TaktikalLogo1.jpg");

        ImageView logoImageView = new ImageView();
        logoImageView.setImage(logoImage);
        logoImageView.setPreserveRatio(false);
        logoImageView.setFitWidth(160);
        logoImageView.setFitHeight(160);
        logoImageView.setSmooth(true);
        logoImageView.setCache(true);

        Label topLabel = new Label("STAR CITIZEN INFONET & DATABASE");
        topLabel.setFont(new Font("Arial", 48));
        topLabel.setTextFill(Color.WHITE);
        topLabel.setMinHeight(160);
        topLabel.setMaxHeight(160);


        HBox topHBox = new HBox();
        topHBox.setStyle("-fx-background-color: black");
        topHBox.setMinHeight(180);
        topHBox.setMaxHeight(180);
        topHBox.setPrefWidth(1090);
        topHBox.getChildren().addAll(logoImageView, topLabel);
        topHBox.setPadding(new Insets(10));
        topHBox.setSpacing(10);

        return topHBox;

    }

    public SplitPane addSplitPane(){

        HBox topHBoxOne = addHBox();
        AnchorPane anchorSplitPane = new AnchorPane();

        SplitPane mainSplitPane = new SplitPane();
        mainSplitPane.setOrientation(Orientation.VERTICAL);
        mainSplitPane.setDividerPosition(1, 200);
        mainSplitPane.setPrefSize(1090, 850);
        mainSplitPane.getItems().addAll(topHBoxOne, anchorSplitPane);


        return mainSplitPane;
    }

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

Upvotes: 0

Views: 96

Answers (1)

Tripal
Tripal

Reputation: 1

I actually put my VBox inside an AnchorPane, and attached it to the anchors, and everything worked perfectly after I set my preferred height and width.

Upvotes: 0

Related Questions