JavaFX场景生成器 - 使用变量值

ste*_*ear 5 java javafx fxml scenebuilder javafx-8

我正在尝试使用Scene Builder来处理我正在处理的复杂GUI,为了简单起见,我试图将窗口的高度和宽度修复为用户屏幕高度的一半.

我遇到的问题是Scene Builder不允许我在"Pref Width"和"Pref Height"字段中输入自定义值,只允许我输入"USE_COMPUTED_SIZE"行的内容

直接查看FXML文件,我发现了这个:

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="0.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="sudokusolver.FXMLDocumentController">
Run Code Online (Sandbox Code Playgroud)

但是我无法在任何地方找到"-Infinity"的替换值.我正在努力做一些事情:

Screen.getPrimary().getVisualBounds().getHeight() / 2;
Run Code Online (Sandbox Code Playgroud)

关于如何自定义这样的值的任何提示或想法?

Ely*_*deh 0

嗯嗯,好吧……

我不确定你在寻找什么,如果你需要将窗口的高度和宽度设置为用户屏幕高度和宽度的一半,有很多方法,最简单的一种是这样的:

public class Main extends Application
{
    public void start(Stage primaryStage) throws Exception
    {

        Parent page = (Parent) FXMLLoader.load(Main.class.getResource("Untitled.fxml"));

        // get the user's screen size
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

        // get width and height of screen and divide them by two
        double width = screenSize.getWidth()/2;
        double height = screenSize.getHeight()/2;

        // set the result to the scene
        Scene scene = new Scene(page,width,height);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Window with half size of screen");
        primaryStage.show();
    }

    public static void main(String[] args)
    {
        launch();

    }
}
Run Code Online (Sandbox Code Playgroud)

另外你已经说过“修复窗口的高度和宽度......”,如果你的意思是禁止用户调整窗口大小,那么你可以使用下面的代码:

    primaryStage.setResizable(false);
Run Code Online (Sandbox Code Playgroud)