我正在尝试使用 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">
但我无法在任何地方找到“-Infinity”的可能替代值。我正在尝试按照以下方式做一些事情:
Screen.getPrimary().getVisualBounds().getHeight() / 2;
关于如何自定义这样的值有什么提示或想法吗?
最佳答案
嗯嗯,好的...
我不确定你在找什么,如果你需要将窗口的高度和宽度设置为用户屏幕高度和宽度的一半,有很多方法,最简单的是这样的:
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();
}
}
此外,您还说过“固定窗口的高度和宽度...”,如果您的意思是禁止用户调整窗口大小,那么您可以使用以下代码:
primaryStage.setResizable(false);
关于JavaFX Scene Builder - 使用变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112904/