首页 > 解决方案 > JavaFx 将标签修复到 vbox 的左侧站点

问题描述

我需要将标签放置在 VBox 的左侧,但 Vbox 使用 setRight() 放置在 BorderPane 内。代码如下所示:

HUD hud;

public GUIGame() {  //extends BorderPane
    setMinSize(TILE_SIZE*8, TILE_SIZE*8);
    setPrefSize(TILE_SIZE*8, TILE_SIZE*8);
    pg = new PlayGround();
    setLeft(pg.createContent()); //createContent returns a parent
    hud = new HUD(pg);
    setRight(hud);
}
public HUD(PlayGround pg){ //extends VBox
        setSpacing(50);
        addLabels(pg);
}
private void addLabels(PlayGround pg){
        final double X_TRANSLATE_LABLE = HUD_WIDTH /2 - 35;
        Label myLabel = new Label();
        myLabel.textProperty().bind(Bindings.concat(fooString, ": ", longFooString));
        myLabel.setFont(new Font(MAX_FONT_SIZE));
        myLabel.setTranslateX(-X_TRANSLATE_LABLE);
        getChildren().addAll(myLabel,...,otherLabels)
}

我设置 translateX 以将标签移动到 HUD 的左侧。但是随着 longFooString 变长(仍然适合 HUD)标签在我的 PlayGround 内移动(可能是因为它试图保持 XTranslate 距离)。有任何解决这个问题的方法吗?我尝试使用 GridPane 但这并没有真正奏效。我还尝试设置标签的最大宽度,也没有用。

标签: javajavafx

解决方案


推荐阅读