我正在使用vlcJ库在我的程序中播放来自另一个VLC
进程(OutOfProcess播放器)的视频。播放视频的vlcJ Canvas
嵌入Component
中的JTabbedPane
。当玩家初始化时,视频画布会在每个其他控件的顶部显示出来。
我读到了heavy-/lightweight component,所以我知道,JRE
1.8在由轻量级组件中嵌入的另一个进程绘制时,仍然无法正确处理重量级组件。
嵌入式重量级组件必须属于该进程 创建了框架或小程序。重量级组件必须有一个 应用程序(或applet)主进程中的有效对等。
所以我的问题是如何解决这个问题,以便Canvas
不会出现在前面" unasked"?
标签"多媒体"托管视频画布。尽管另一个标签是打开的,但画布仍保留在所有内容之上。当主持人选项卡"多媒体"打开一次,视频画布正确行为并保持在其标签中。
答案 0 :(得分:0)
在@MadProgrammer和@caprica的帮助下,我找到了一个解决方法:由于我使用的是带有vlcJ-pro
的OutOfProcess播放器,我无法使用"直接& #34; aproach,因为播放器和画布不是同一个过程。
隐藏和显示视频画布也没有选项,因为绘制视频图像的组件必须始终可见(否则会发生严重异常)。
所以最后我将视频画布包裹在JPanel
CardLayout
中,然后在空白窗格和视频画布之间切换。每次打开带有媒体播放器的选项卡时,视频画布都会变为可见,否则为空窗格。
这种解决方法似乎工作正常。