将标签定位到父窗格中的不同侧

时间:2015-04-24 13:41:31

标签: javafx javafx-8

我有一个关于将文本定位到条形区域的问题。

我创建了这个例子:

void products_add(Product productsListHead)

我如何获得这种视觉效果:

enter image description here

在我的情况下,我想调整主舞台的大小并保留文本的相对位置。如果有更合适的组件,我可以使用不同的布局更改FlowPane。

2 个答案:

答案 0 :(得分:3)

您可以选择使用StackPane并以不同方式对齐其子女:

@Override
public void start( Stage stage )
{

    StackPane flow = new StackPane();

    flow.setPrefSize(900, 30);

    Label label = new Label("Zoom 1.5");
    Label labelStat = new Label("Users 7");
    Label labelSec = new Label("Connected");

    StackPane.setAlignment( label, Pos.CENTER_LEFT );
    StackPane.setAlignment( labelStat, Pos.CENTER );
    StackPane.setAlignment( labelSec, Pos.CENTER_RIGHT );

    flow.getChildren().addAll(label, labelStat, labelSec);

    Scene scene = new Scene(flow);

    stage.setScene(scene);
    stage.show();
}

答案 1 :(得分:2)

另一种选择,如果您预计将来会添加更多标签,则可以在HBox中使用间隔(或弹簧)实现。

@Override
public void start(Stage primaryStage)
{
    HBox hbox = new HBox();
    hbox.setPrefSize(900, 30);

    Label label = new Label("Zoom 1.5");
    Label labelStat = new Label("Users 7");
    Label labelSec = new Label("Connected");

    Region lSpring = new Region();
    HBox.setHgrow(lSpring, Priority.ALWAYS);
    Region rSpring = new Region();
    HBox.setHgrow(rSpring, Priority.ALWAYS);

    hbox.getChildren().addAll(label, lSpring, labelStat, rSpring, labelSec);
    Scene scene = new Scene(hbox);

    primaryStage.setTitle("HBox Springs");
    primaryStage.setScene(scene);
    primaryStage.show();
}