我正在使用vlcJ库在我的程序中播放来自另一个VLC进程(OutOfProcess player)的视频。播放视频的vlcJ Canvas嵌入到JTabbedPane中的Component中。当播放器初始化时,视频画布就会出现在所有其他控件的前面。
我读过关于重/轻组件的文章,所以我知道,当轻量级组件中嵌入的另一个进程绘制时,JRE 1.8仍然不能正确地处理重量级组件。
嵌入式重量级组件必须属于创建框架或applet的过程。重量级组件必须在应用程序(或applet)的主进程中有一个有效的对等点。
所以我的问题是如何解决这个问题,这样Canvas就不会出现在“无人问津”的面前了?

选项卡“多媒体”承载视频画布。尽管另一个选项卡是打开的,画布仍然保持在一切之上。当主机选项卡“多媒体”打开一次,视频画布的行为正确,并停留在它的标签。
发布于 2016-01-07 13:49:12
在@MadProgrammer和@caprica的帮助下,我找到了一个解决办法:由于我使用的是带有OutOfProcess的vlcJ-pro播放器,所以我不能使用“直接”aproach,因为Player和canvas是不同的过程。
隐藏和显示视频画布也是不可选的,因为绘制视频图像的组件必须始终可见(否则会发生严重异常)。
最后,我用JPanel将我的视频画布包装成一个CardLayout,然后在一个空窗格和视频画布之间切换。每次打开带有mediaplayer的选项卡时,视频画布就会可见,否则就会显示空窗格。这个解决办法似乎很好。
https://stackoverflow.com/questions/34650737
复制相似问题