java canvas jcompant_java – 尝试将vlcj媒体播放器嵌入到JPanel中的WindowsCanvas中

本文介绍了尝试在Java的JPanel中使用vlcj库播放视频时遇到的“Component must be displayable”异常。问题出在Java Canvas组件未正确设置。代码示例展示了如何创建一个包含WindowsCanvas的JPanel,以及如何初始化和播放媒体。尽管JFrame已设置为可见,但异常仍然发生,可能需要进一步检查组件的显示状态和vlcj的配置。
摘要由CSDN通过智能技术生成

我正在尝试在JPanel中使用vlcj播放视频,但它对我不起作用.我得到的消息异常是“

java.lang.IllegalStateException:视频表面组件必须是可显示的”,这与

Keep getting an Error “Component must be displayable”中的问题相同.

包含画布和vlcj播放器的JPanel代码如下:

import javax.swing.JPanel;

import com.sun.jna.Native;

import com.sun.jna.NativeLibrary;

import java.awt.Canvas;

import java.awt.Color;

import uk.co.caprica.vlcj.binding.LibVlc;

import uk.co.caprica.vlcj.player.MediaPlayerFactory;

import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;

import uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface;

import uk.co.caprica.vlcj.runtime.RuntimeUtil;

import uk.co.caprica.vlcj.runtime.windows.WindowsCanvas;

public class MyJPanel extends JPanel {

private EmbeddedMediaPlayer player;

private WindowsCanvas canvas;

public MyJPanel() {

canvas = new WindowsCanvas();

add(canvas);

revalidate();

repaint();

canvas.setVisible(true);

MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();

player = mediaPlayerFactory.newEmbeddedMediaPlayer();

CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas);

player.setVideoSurface(videoSurface);

player.playMedia("v.avi"); // This sentence throws the exception.

}

}

MyJFrame扩展了JFrame,只包含MyJPanel JPanel.我认为这根本不重要.

import javax.swing.JFrame;

public class MyJFrame extends JFrame {

protected MyJPanel myJPanel;

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

MyJFrame frame = new MyJFrame();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public MyJFrame() {

myJPanel = new myJPanel();

add(myJPanel);

}

}

提前致谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值