有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将HBox中的子对象左、中、右对齐

我有一个HBox,其儿童设置如下:

HBox h = new HBox();
h.setMinWidth(555);

Label leftLabel = new Label("Left");
Label centerLabel = new Label("Center");

HBox rightContent = new HBox();
Label r1 = new Label("2");
Label r2 = new Label("3");

rightContent.getChildren().addAll(r1, r2);
h.getChildren().addAll(leftLabel, centerLabel, rightContent);

这将创建一个HBox,所有子项都浮动在左侧。我希望leftLabel位于左侧,centerLabel位于中间,rightContent位于最右侧

我怎样才能做到这一点

提前谢谢大家


共 (1) 个答案

  1. # 1 楼答案

    您可以使用以下技巧:

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.Priority;
    import javafx.scene.layout.Region;
    import javafx.stage.Stage;
    
    
    public class Main23 extends Application {
    
        @Override
        public void start(Stage primaryStage) throws Exception {
            Label label1 = new Label("Left");
            label1.setStyle("-fx-background-color: red; -fx-text-fill: white;");
    
            Label label2 = new Label("Center");
            label2.setStyle("-fx-background-color: green; -fx-text-fill: white;");
    
            Label label3 = new Label("Right");
            label3.setStyle("-fx-background-color: blue; -fx-text-fill: white;");
    
            Region region1 = new Region();
            HBox.setHgrow(region1, Priority.ALWAYS);
    
            Region region2 = new Region();
            HBox.setHgrow(region2, Priority.ALWAYS);
    
            HBox hBox = new HBox(label1, region1, label2, region2, label3);
    
            primaryStage.setScene(new Scene(hBox, 640, 240));
            primaryStage.show();
        }
    }
    

    如您所见,我只是添加了几个Region控件来填充标签之间的空间,并将Hgrow属性设置为ALWAYS

    enter image description here

    这种技巧在某些情况下是合适的,因为有时您不能使用其他布局,例如,如果您想对齐ToolBar内的按钮