Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
131 views
in Technique[技术] by (71.8m points)

hbox - 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);
    }
}
question from:https://stackoverflow.com/questions/65930675/im-trying-to-figure-out-how-to-make-my-vbox-inside-a-borderpane-expand-with-the

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...