如何在Scene Builder中固定窗口大小?

时间:2018-09-01 03:23:50

标签: java javafx fxml

我在这里设置了最大/最小宽度/高度

enter image description here

但是它似乎没有用,我仍然可以在预览时更改窗口的大小

2 个答案:

答案 0 :(得分:3)

您可以在舞台上设置.setResizable(false);,应该会有所帮助。

答案 1 :(得分:2)

您正在设置的值(可能是)为根Node。这不会阻止SceneStage增长或缩小到指定值之外。实际上,根据根Node设置这些值甚至不会阻止所说的Node的增长或缩小。

来自Scene的Javadoc:

  

应用程序必须通过设置root属性为场景图指定根Node。如果将“组”用作根,则场景图的内容将被场景的宽度和高度限制,并且场景尺寸的更改(如果用户调整了舞台的大小)将不会更改场景图的布局。如果将可调整大小的节点(布局区域或控件)设置为根,则根的大小将跟踪场景的大小,从而根据需要中继内容。

如果要限制Stage的大小,则需要在代码中通过设置Stage的适当属性来做到这一点:minWidthminHeight,{ {1}}和maxWidth。由于您正在设置maxHeightminWidth = maxWidth,因此最好使用minHeight = maxHeight(如Bernhard's answer中所述)。此选项还可以防止Stage.setResizable(false)最大化(设置最小/最大尺寸属性不起作用)。尽管在我的计算机上,属性 do 在最大化时阻止Stage增长,但会导致Stage跳到左上角。

由于您无权访问Scene Builder使用的预览Stage(据我所知),我认为您不能限制预览的大小。但是,您可能能够处理的一件事是,预览Stage在关闭时会打开为其先前的大小。我不确定为什么这是默认/不可更改的行为,但是我猜测是由于每次使用相同的Stage引起的。要将Stage调整为首选大小,请访问:

Stage

Screenshot of menu item in Scene Builder

这要求显示预览,否则菜单项被禁用。