如何在保持纵横比的同时调整javafx.scene.scene的大小?
我正在用JavaFX2.2.7-b01编写一个应用程序 下面是我目前拥有的代码示例。如何允许调整应用程序窗口的大小,但保持最初配置的纵横比?换句话说,如果用户调整窗口大小,窗口宽度应始终保持为窗口高度的两倍如何在保持纵横比的同时调整javafx.scene.scene的大小?,javafx,Javafx,我正在用JavaFX2.2.7-b01编写一个应用程序 下面是我目前拥有的代码示例。如何允许调整应用程序窗口的大小,但保持最初配置的纵横比?换句话说,如果用户调整窗口大小,窗口宽度应始终保持为窗口高度的两倍 ... public void showScene(Stage stage, String fxmlPath) { try { FXMLLoader loader = new FXMLLoader(); loader.setBuilderFactory
...
public void showScene(Stage stage, String fxmlPath) {
try {
FXMLLoader loader = new FXMLLoader();
loader.setBuilderFactory(new JavaFXBuilderFactory());
loader.setLocation(fxmlPath);
Parent page;
try (InputStream in = Main.class.getResourceAsStream(fxmlPath)) {
page = (Parent) loader.load(in);
}
Scene scene = new Scene(page, 400, 200);
stage.setScene(scene);
stage.sizeToScene();
stage.show();
} catch (Exception ex) {
...
}
}
...
JavaFX似乎允许用户在构造函数中指定场景的宽度和高度,但不允许编程访问来更新宽度或高度。没有setWidth或setHeight方法。我知道我可以添加属性侦听器,以便在调整场景大小时获取场景的只读宽度/高度,但我还无法想出如何动态更改场景尺寸,以便强制保持纵横比
我想,如果我要对场景对象进行子类化,这是可能的(如果我必须这样做,我会这样做),但是还有其他简单的方法吗?在使用Java Fx Scene Builder的netbeans中,您可以使用AnchorPane约束来设置 调整舞台的大小。
如何在保持高宽比的同时调整javafx.scene.scene的大小?
通过操纵舞台大小而不是场景:
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Play by resizing the window");
VBox root = new VBox();
root.getChildren().add(btn);
root.setStyle("-fx-background-color: gray");
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.minWidthProperty().bind(scene.heightProperty().multiply(2));
primaryStage.minHeightProperty().bind(scene.widthProperty().divide(2));
primaryStage.show();
}
更改值时使用RemovelListener和addListener防止侦听器链接
privateChangeListener我不认为你能用JavaFX2.2找到一个合适的解决方案。我建议针对记录一个功能请求。我只是想指出,此解决方案并不完美,因为如果您放大窗口,然后尝试缩小它,它不会让您一直沿着对角线进行,最后,您必须从底部和侧面对其进行摆振。此时,您将发现此示例以及其他与调整大小相关的stackoverflow代码示例通过将一个维度的最小值和最大值绑定到另一个维度,您可以避免MikaelF指出的摆振问题,例如stage.setMinHeight(580);DoubleBinding w=stage.heightProperty().减法(28).除法(2);stage.minWidthProperty().bind(w);stage.maxWidthProperty().bind(w);请注意,然后只能在一个尺寸中调整窗口的大小,而另一个尺寸将自动调整。