如何访问我通过javafx场景构建器创建的vbox?

时间:2013-08-24 20:01:34

标签: java javafx

我已从场景构建器添加了一个vbox,并将其可见性设置为false。基于某些条件,我想将可见性设置为true。我该怎么做?

我也是java的新手,所以我无法解决root.getChildren()的问题,这会引发编译错误,getChildren()在Parent中具有受保护的访问权限。你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

这需要三个步骤。

  1. 在FXML文件中定义控制器Java类。无论是在SceneBuilder中还是直接在XML中。
  2. 在控制器定义字段VBox中,并使用@FXML对其进行注释,并在XML中使用其名称fx:id。这将告诉JavaFX将您的字段与正确的VBox实例绑定。
  3. 用VBox做任何你想做的事。
  4. XML定义(通知fx:controllerfx:id):

        <BorderPane prefHeight="600.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="foo.bar.MainController">
          <center>
            <VBox fx:id="content" fillWidth="true" prefHeight="200.0" prefWidth="100.0" />
          ...
    

    控制器类:

        public class MainController {
              @FXML
              private VBox content;
        }
    

    如果你想从外面调用控制器类,你将从FXMLLoader的正确实例获得控制器实例,如下所示:

       MainController controller = (MainController) loader.getController();