如果内容发生更改,则自动调整舞台大小

时间:2012-12-21 08:13:08

标签: java javafx-2

我使用SceneBuilder和相应的场景和舞台创建了AnchorPane。 AnchorPane包含VBox。所有尺寸的AnchorPane都是USE_COMPUTED_SIZE。 VBox的高度改为programmicaly,但场景和舞台的大小不会改变。

如何让它们自动调整为内容大小?

1 个答案:

答案 0 :(得分:8)

Application类的start()方法传递一个Stage对象(由向导调用stage)。如果在该类(mStage)中声明一个Stage类型的成员变量,那么你在start()中做的第一件事就是保存它:

mStage = stage;

您现在可以随时执行此操作(当然,在您的Application类中):

mStage.sizeToScene();

如果您需要从控制器类中执行此操作,则可以为控制器提供对应用程序的引用(或者可能更好,让Application类实现控制器的接口)。啊,你说,但我的Application类没有引用控制器,反之亦然)。好吧,我从来不喜欢向导生成的代码,因为从XML文件中扩展控制器而不给你一个引用,这使得使用document-view-controller模式很难。如果您想了解如何获得对控制器的引用,请参阅以下幻灯片8(而非第8页)。如果您还想要实例化然后指定自己的控制器(我有一个非常需要的用例),请参阅幻灯片10和11:

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxwc2NoaW1wZjk5fGd4OjVlODJiOTg2OTVlYzky