JavaFX FXML-SceneBuilder-Image-resizable

时间:2016-12-03 16:24:35

标签: java javafx fxml scenebuilder

我的问题是,如何在JavaFX中使用应用程序窗口的大小来操作期间实现图像的自动调整大小?可以直接在SceneBuilder中完成吗?

2 个答案:

答案 0 :(得分:3)

不使用ImageView,但如果您将图片添加为Region的背景图片,则表示Region可以调整大小,背景图片也可以调整大小使用设置。例如。您可以使用以下CSS属性在Region

中包含stackoverflow徽标
-fx-background-image: url('http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a');
-fx-background-size: contain;
-fx-background-repeat: no-repeat;
-fx-background-position: center;

(在上面的代码中,属性名称和值由:分隔,;不是值的一部分。它是在您在规则中写入时编写的在css样式表中。)

您可以将contain替换为stretch,以保留宽高比。在这种情况下,您不需要-fx-background-position属性。

有关所用属性的更多信息,请参阅CSS doc for Region.

只要您将其添加到已调整大小的Region,这应该可以正常工作。如果要将图像调整为完整场景大小,则需要在根Pane设置属性。

除此之外,您可能需要编写自定义控件。 (AFAIK无法使用SceneBuilder中的表达式绑定。)

答案 1 :(得分:2)

它可以将WidthPropertyHeightProperty绑定到窗口大小。我们假设节点root反映了窗口的大小。

ImageView iv = new ImageView();
iv.fitWidthProperty().bind(root.widthProperty());
iv.fitHeightProperty().bind(root.heightProperty());

现在它与父母的属性(root)划痕。您也可以选择不同的节点或执行一些计算来修改大小。