每当我在下面的代码中打印标签大小时,我会得到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.");
此阶段在显示阶段后调用。我该怎么做才能更新标签的宽度?
答案 0 :(得分:1)
好的,经过长时间的测试和玩耍后,我注意到你不仅需要询问节点的大小,而且要显示舞台,你必须在展示舞台之前将它们添加到容器中。所以基本上你必须初始化一个容器,将该容器添加到场景中,将所有组件添加到容器中,然后显示该阶段。完成这些步骤后,您可以自由地询问节点的大小,这些大小是正确的。
现在,考虑到这一点,我仍然不确定如何询问在显示阶段之后初始化的节点的大小。基本上,我仍然不确定如何刷新舞台,以便更新其中的所有内容。在构建任何类型的应用程序时,我基本上必须在开始时创建所有内容,并且我没有必要这样做。有时(也许是游戏设计)我可能不希望一次创建所有内容。我可能希望只在玩家到达时创造东西。能够在飞行途中更新节点的大小(如果你知道我的意思)真的很有帮助。如果有人知道如何做到这一点,请告诉我。