我是javafx的新手.是否可以根据屏幕分辨率在fxml文件中动态设置首选宽度和高度?我知道如何获得屏幕分辨率并将其设置为阶段:
Screen screen = Screen.getPrimary(); Rectangle2D bounds = screen.getVisualBounds(); stage.setWidth(bounds.getWidth()); stage.setHeight(bounds.getHeight());
我的问题是关于在fxml文件中动态设置prefWidth和prefHeight.另外我想知道我是否可以以编程方式更改fxml文件中的属性值,我正在使用场景构建器.
您可以(在某种程度上)在FXML中执行此操作,但不能在Scene Builder中执行此操作(据我所知).您可以使用fx:factory
属性来获取主屏幕并在
块中定义它.然后使用表达式结合以结合prefWidth
和prefHeight
根窗格到屏幕的宽度和高度的.
这看起来像
MaximizedPane.fxml:
这是一个快速测试工具:
import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.stage.Stage; public class MaximizedFXMLPane extends Application { @Override public void start(Stage primaryStage) throws IOException { Scene scene = new Scene(FXMLLoader.load(getClass().getResource("MaximizedPane.fxml"))); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
(使用Scene Builder无法做到这一点的原因是它不支持
在FXML中插入块的任何机制等.)