如果内容改变,自动调整舞台大小



我用SceneBuilder和相应的场景和舞台创建了AnchorPane。AnchorPane包含VBox。锚面板的所有大小都是USE_COMPUTED_SIZE。VBox的高度可以通过编程改变,但Scene和Stage的大小不变。

如何使它们自动调整到内容大小?

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

mStage = stage;

你现在可以在任何你需要的时候这样做(当然是在你的Application类中):

mStage.sizeToScene ();

如果你需要从你的控制器类做,你可以给你的控制器一个引用到你的应用程序(或者可能更好,让你的应用程序类实现一个接口的控制器)。啊,你说,但是我的Application类没有对控制器的引用,反之亦然)。嗯,我从来都不喜欢向导生成的代码,因为它会从XML文件膨胀控制器,而不给您对它的引用,这使得使用文档-视图-控制器模式变得困难。如果您想了解如何获得对控制器的引用,请参阅下面的幻灯片8(不是第8页)。如果您想进一步实例化并指定您自己的控制器(我有一个非常需要的用例),请参阅幻灯片10和11:

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

最新更新