gpt4 book ai didi

java - 如何使 JavaFX MediaView 拉伸(stretch)媒体以填充父级?

转载 作者:行者123 更新时间:2023-12-02 02:33:59 25 4
gpt4 key购买 nike

我想让 JavaFX MediaView 拉伸(stretch)以填充父容器。

我之前尝试过谷歌的一些方法,但没有任何帮助(也许我没有正确应用它),并且有一个与此同名的问题,但该问题的解决方案可能不适合我。

首先我使用ahchorpane来锚定mediaview,但发现它无法拉伸(stretch)mediaview,我不知道为什么,因为其他控件(如按钮)可以工作。

然后我尝试将其宽度和高度绑定(bind)到anchorpane(mediaview的父级)

    Region region=(Region) mediaplayer.getParent();
mediaplayer.setPreserveRatio(false);
mediaplayer.fitWidthProperty().bind(region.widthProperty());
mediaplayer.fitHeightProperty().bind(region.heightProperty());

当我调整窗口大小时,它可以准确地扩展媒体 View ,但不能缩小!我想这可能是因为区域的大小取决于它的 child ?

最后,我尝试将 mediaview'size 绑定(bind)到 stage'size,这是可行的,但是代码看起来很难看,因为我需要手动计算大小。

    mediaplayer.setPreserveRatio(false);
mediaplayer.fitWidthProperty().bind(stage.widthProperty().subtract(200));
mediaplayer.fitHeightProperty().bind(stage.heightProperty().subtract(135));

有没有更好的解决方案?

最佳答案

使用下面的代码,您将看到您可以根据需要拉伸(stretch)和收缩 mediaView(取决于舞台尺寸)

import java.io.File;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class TestApp extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage stage) {

BorderPane pane = new BorderPane();

FileChooser fc = new FileChooser();
File mediaFile = fc.showOpenDialog(null);

MediaView moviePlayer;

if (mediaFile != null) {
MediaPlayer player = new MediaPlayer(new Media(mediaFile.toURI().toString()));

moviePlayer = new MediaView(player);

moviePlayer.setPreserveRatio(false);
moviePlayer.fitWidthProperty().bind(pane.widthProperty());
moviePlayer.fitHeightProperty().bind(pane.heightProperty());

pane.getChildren().add(moviePlayer);
player.play();

}

Scene scene = new Scene(pane, 300, 300);
stage.setScene(scene);
stage.show();
}
}

这段代码也适用于 AnchorPane,所以如果您仍然遇到问题或者我不明白您需要什么,我猜您的代码还有其他问题。制作一个简单的可运行程序来演示该问题。

关于java - 如何使 JavaFX MediaView 拉伸(stretch)媒体以填充父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46667686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com