我一直在做很多研究,并试图找到一个指南,可以教我如何正确地将YouTube视频直接嵌入我的JFrame
。我已经阅读了 YouTube API 上的所有Google开发者指南,但找不到我想要做的事情。
我正在尝试使用我的主要方法中的init将YouTube视频直接嵌入JFrame
。例如:
/**
* Main
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
} catch (UnsupportedLookAndFeelException ulafe) {
Loader loader = new Loader();
loader.doFrame();
}
Start Loader = new Start();
Loader.setVisible(true);
}
/**
* Start
* @throws IOException
*/
public Start() throws IOException {
super("Ryan's Client Launcher version: '0.0.1'");
try {
getContentPane().setBackground(Color.BLACK);
setBackground(Color.BLACK);
BufferedImage image39 = ImageIO.read(getClass().getResourceAsStream("\\jaggl\\igs\\39.png"));
this.setIconImage(image39);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(new Dimension(launcherWidth, launcherHeight));
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setUndecorated(true);
getContentPane().setLayout(null);
initWorldSelectInterface();
} catch (IOException e) {
System.out.println(e);
}
}
在我启动我的世界选择界面的地方,我想要“initYouTubeVideo
”
我创建了一个空洞“initYouTubeVideo
”并且并不完全理解我如何嵌入视频&只有视频。说我为我的游戏做了更新我制作了一段关于它的YouTube视频。我想在我的JFrame
上播放该视频(没有评论部分或其他任何内容只是YouTube视频)。
有人可以给我一个指南,我可以直接了解如何嵌入YouTube视频。
对于这篇文章,我做了一个示例JFrame,以帮助您在视觉上理解我正在努力实现的目标。这是图片:
在图像中,红色是我放置YouTube播放器的位置。绿色是我的界面。现在再次说我在游戏中做了更新。制作了关于它的YouTube视频。我希望能够将视频链接放入&当有人运行客户端时,他们可以点击播放&观看视频。
注意:我使用的是 Google的YouTube API
我查看了以下指南: 有关YouTube API的所有信息,请访问:https://developers.google.com/youtube/v3/getting-started
再次我想要的只是将视频添加到JFrame,以便我的玩家可以获得有关最新游戏内容的视频更新。
谢谢你&代表那些可以帮助我的人。
答案 0 :(得分:10)
以下是我通常用于将YouTube视频嵌入Swing应用程序的方式。
将原生浏览器组件嵌入到JPanel中,而不是使用YouTube APIpublic class YouTubeViewer {
public static void main(String[] args) {
NativeInterface.open();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("YouTube Viewer");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(getBrowserPanel(), BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
});
NativeInterface.runEventPump();
// don't forget to properly close native components
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
NativeInterface.close();
}
}));
}
public static JPanel getBrowserPanel() {
JPanel webBrowserPanel = new JPanel(new BorderLayout());
JWebBrowser webBrowser = new JWebBrowser();
webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
webBrowser.setBarsVisible(false);
webBrowser.navigate("https://www.youtube.com/v/b-Cr0EWwaTk?fs=1");
return webBrowserPanel;
}
}
运行时看起来像
以上库是启动上述示例所必需的:
你可以从DJ Native Swing下载包中获取所有这些内容。
答案 1 :(得分:3)
public class YoutubePlay
{
public static void main(String[] args) throws URISyntaxException {
final URI uri = new URI("http://www.youtube.com/watch?v=qzW6mgfY5X4");
class OpenUrlAction implements ActionListener
{
@Override public void actionPerformed(ActionEvent e) {
open(uri);
}
}
JFrame frame = new JFrame("Links");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100, 400);
Container container = frame.getContentPane();
container.setLayout(new GridBagLayout());
JButton button = new JButton();
button.setText("<HTML>Click the <FONT color=\"#000099\"><U>link</U></FONT>");
button.setHorizontalAlignment(SwingConstants.LEFT);
button.setBorderPainted(false);
button.setOpaque(false);
button.setBackground(Color.WHITE);
button.setToolTipText(uri.toString());
button.addActionListener(new OpenUrlAction());
container.add(button);
frame.setVisible(true);
}
private static void open(URI uri)
{
if (Desktop.isDesktopSupported())
{
try
{
Desktop.getDesktop().browse(uri);
}
catch (IOException e)
{ /* TODO: error handling */ }
}
else
{ /* TODO: error handling */ }
}
}
答案 2 :(得分:1)
我没有声誉来评论和解释Mayukh的情况,但我想帮助你。这里的诀窍(在Jk1的回答中)在
中 webBrowser.navigate("https://www.youtube.com/v/b-Cr0EWwaTk?fs=1");
原始链接是:
https://www.youtube.com/watch?v=b-Cr0EWwaTk
但你将其切换为:
https://www.youtube.com/v/b-Cr0EWwaTk?fs=1
在“全屏幕浏览器”视图中获取视频。