我在播放视频的嵌套JPanel时遇到了一些麻烦。我有一个AVPlayer类扩展JPanel,可同时播放多达4个视频。每个视频都在自己的画布中播放,该画布位于自己的JPanel中。然后将所有面板放入AVPlayer面板。但当我尝试播放视频时,我得到的只是一个黑色方块。
我不确定我的更大程序中的实际问题是什么,但我想我可以解决它,如果我可以使用下面的第二位代码播放视频。有人能告诉我为什么第一部分代码能够正确显示所有视频,但第二部分却没有。
有效的代码:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
AVPlayer player = new AVPlayer();
frame.getContentPane().add(player);
frame.revalidate();
String[] path = {"(ei)ga_00.mp4", "ei-utsu(ru)_00.mp4", "video.mp4"};
player.playVideo(path);
显示一个小黑方的代码
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
AVPlayer player = new AVPlayer();
JPanel panel = new JPanel();
panel.add(player);
frame.getContentPane().add(panel);
frame.revalidate();
String[] path = {"(ei)ga_00.mp4", "ei-utsu(ru)_00.mp4", "video.mp4"};
player.playVideo(path);
答案 0 :(得分:1)
将JPanel panel = new JPanel();
更改为JPanel panel = new JPanel(new BorderLayout());
您的AVPlayer
也应覆盖getPreferredSize
的{{1}}方法并返回"首选尺寸"通过这种方式,布局管理人员有一些希望能够真正做到这一点
有关详细信息,请参阅Laying Out Components Within a Container
请注意vlcj的主要视频表面是一个重量级的组件,将它们混合在轻量级容器上会产生一些不良影响