我使用SceneBuilder和相应的场景和舞台创建了AnchorPane。 AnchorPane包含VBox。所有尺寸的AnchorPane都是USE_COMPUTED_SIZE。 VBox的高度改为programmicaly,但场景和舞台的大小不会改变。
如何让它们自动调整为内容大小?
答案 0 :(得分:8)
Application类的start()方法传递一个Stage对象(由向导调用stage)。如果在该类(mStage)中声明一个Stage类型的成员变量,那么你在start()中做的第一件事就是保存它:
mStage = stage;
您现在可以随时执行此操作(当然,在您的Application类中):
mStage.sizeToScene();
如果您需要从控制器类中执行此操作,则可以为控制器提供对应用程序的引用(或者可能更好,让Application类实现控制器的接口)。啊,你说,但我的Application类没有引用控制器,反之亦然)。好吧,我从来不喜欢向导生成的代码,因为从XML文件中扩展控制器而不给你一个引用,这使得使用document-view-controller模式很难。如果您想了解如何获得对控制器的引用,请参阅以下幻灯片8(而非第8页)。如果您还想要实例化然后指定自己的控制器(我有一个非常需要的用例),请参阅幻灯片10和11: