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)
关于如何自定义这样的值的任何提示或想法?
嗯嗯,好吧……
我不确定你在寻找什么,如果你需要将窗口的高度和宽度设置为用户屏幕高度和宽度的一半,有很多方法,最简单的一种是这样的:
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)