JavaFx节点大小

时间:2014-10-25 01:36:59

标签: java javafx

每当我在下面的代码中打印标签大小时,我会得到0.0作为大约290的宽度。

private void initializeComponents() {
    setId("main_window");
    setAlignment(Pos.TOP_LEFT);
    String sn = "scene_main.css";
    String stylesheet = getClass().getResource(sn).toExternalForm();
    getStylesheets().add(stylesheet);
    welcome.setTranslateX((Main.window.getWidth() - welcome.getWidth()) / 2);
    welcome.setTranslateY(5);
    options.setTranslateX((Main.window.getWidth() - options.getWidth()) / 2);
    options.setTranslateY(welcome.getTranslateY() + welcome.getHeight() + 20);
    getChildren().add(welcome);
    getChildren().add(options);
}

private Label welcome = new Label("Welcome to your Bank!");
private Label options = new Label("Choose a user.");

此阶段在显示阶段后调用。我该怎么做才能更新标签的宽度?

1 个答案:

答案 0 :(得分:1)

好的,经过长时间的测试和玩耍后,我注意到你不仅需要询问节点的大小,而且要显示舞台,你必须在展示舞台之前将它们添加到容器中。所以基本上你必须初始化一个容器,将该容器添加到场景中,将所有组件添加到容器中,然后显示该阶段。完成这些步骤后,您可以自由地询问节点的大小,这些大小是正确的。

现在,考虑到这一点,我仍然不确定如何询问在显示阶段之后初始化的节点的大小。基本上,我仍然不确定如何刷新舞台,以便更新其中的所有内容。在构建任何类型的应用程序时,我基本上必须在开始时创建所有内容,并且我没有必要这样做。有时(也许是游戏设计)我可能不希望一次创建所有内容。我可能希望只在玩家到达时创造东西。能够在飞行途中更新节点的大小(如果你知道我的意思)真的很有帮助。如果有人知道如何做到这一点,请告诉我。