gpt4 book ai didi

java - 停止 JFX 嵌入的 YouTube 视频

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:51 25 4
gpt4 key购买 nike

我有一个 JPanel 组件,其中包含一个带有嵌入 YouTube 视频的浏览器的 JFXPanel。我使用的是 YouTube 中的视频嵌入网址(即 https://www.youtube.com/embed/W-J2OYN9fF8?autoplay=true&controls=0 )。

我可以将 JPanel (VideoPlayer) 添加到周围的组件,没有任何问题。但是 - 当我删除 VideoPlayer 时,我还想停止 YouTube 播放器。截至目前 - 它一直在后台播放(带有烦人的声音)。我猜我必须以某种方式进入 JFX 线程...所以,如果有人可以帮助我将代码放入 stopTrailer() 方法 - 我将非常感激!

这是我当前的代码。对于那些正在寻找一种简单方法将 JFX YouTube 播放器嵌入到普通 JPanel 中的人来说 - 这非常有效 - 除了上述限制之外......

public class VideoPlayer extends JPanel {  
private Stage stage;
private WebView browser;
private JFXPanel jfxPanel;
private WebEngine webEngine;
private String videoUrl;

public VideoPlayer(String url){
this.videoUrl = url;
jfxPanel = new JFXPanel();
createScene();
setLayout(new BorderLayout());
setPreferredSize(new Dimension(800, 560));
add(jfxPanel, BorderLayout.CENTER);
}
private void createScene() {
PlatformImpl.startup(new Runnable() {
@Override
public void run() {
stage = new Stage();

stage.setTitle("Video");
stage.setResizable(true);

Group root = new Group();
Scene scene = new Scene(root,80,20);
stage.setScene(scene);
//Set up the embedded browser:
browser = new WebView();
webEngine = browser.getEngine();
webEngine.load(videoUrl);

ObservableList<Node> children = root.getChildren();
children.add(browser);

jfxPanel.setScene(scene);
}
});
}

public void stopTrailer() {

}
}

最佳答案

这个问题的答案其实很简单。我将以下内容放入 stopTrailer 方法中。

public void stopTrailer() { 
PlatformImpl.startup(new Runnable() {
@Override
public void run() {
remove(jfxPanel);
webEngine.load(null);
}
});
}

它实际上所做的是将浏览器webEngine重新加载到“地址”null。并拆除面板。这对我来说似乎有点奇怪,因为我会将此代码解释为第二个线程的开始 - 而无需访问第一个线程。也许有人可以解释这是如何工作的?

关于java - 停止 JFX 嵌入的 YouTube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473613/

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