2012-05-27 1 views
1

В настоящее время я занимаю 2 части работы, которые я хочу объединить. У меня есть простой медиаплеер, работающий в JFrame и графическом интерфейсе, который я хотел бы добавить для воспроизведения видео на JPanel.Добавление видеопроигрывателя в JPanel в java с помощью VLCJ

Код для которой создает окно видеоплеера следующим образом:

private final JFrame vidFrame; 
private final EmbeddedMediaPlayerComponent vidComp; 

//Creates JPanel for video player 
public Video() { 

    vidFrame = new JFrame("VLC video test"); 
    vidFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    vidFrame.setLocation(100, 100); 
    vidFrame.setSize(800, 800); 

    vidComp = new EmbeddedMediaPlayerComponent(); 

    //This is the point where I am trying to add the video player to the GUI 
    MainWindow.vidPanel.add(vidComp); 

    vidFrame.add(vidComp); 
    vidFrame.setVisible(true); 
} 

И это панель Я пытаюсь добавить игрока:

JPanel vidPanel = new JPanel(); 
    vidPanel.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null)); 
    vidPanel.setBounds(10, 11, 532, 400); 
    contentPane.add(vidPanel); 

Я получаю ошибку сообщение: «vidPanel не может быть разрешен или не является полем»

Кто-нибудь знает, как я могу это исправить?

+0

Для лучшей помощи в ближайшее время опубликуйте [SSCCE] (http://sscce.org/). Этот 2-й фрагмент кода должен был скомпилировать или показать другую ошибку, если она закодирована, как показано. BTW - 'setBounds (..' Использовать макеты, чтобы избежать проблем позже. –

ответ

1

Во-первых, это выглядит как ваш vidPanel является локальным переменным и должна быть полем, если вам нужно получить к нему доступ из других методов. Это довольно простая часть Java - любой учебник для начинающих должен охватывать это. VLCJ - это не самая простая вещь для использования, и вы можете отклеиться, если не поняли основные принципы.

Во-вторых, перед тем, как зайти слишком далеко по этой дорожке, встроенный проигрыватель VLCJ не работает с JPanel, а только с родным AWT Canvas - так что вам нужно будет использовать это вместо этого.

+0

Спасибо за ваш вклад. Я потратил много времени, чтобы освежиться в основных принципах и реструктурировал свой проект, чтобы я мог достичь требуемой реализации :) – jazibobs

0

Прежде всего мне кажется, что vidPanel определяется как локальная переменная, делает его полем-членом, определяя в области класса (не в методе).

Это не то, что вы делаете в реальном обслуживаемом коде, а просто для быстрого решения своей проблемы: Определите функцию getVidPanel() в MainWindow, которая возвращает vidPanel.

Тогда вместо ошибочной строки используйте следующее:

MainWindow aMainWindowInstance = new MainWindow(); 
aMainWindowInstance.getVidPanel().add(vidComp); 
3

У меня была такая же проблема и просто решить ее сегодня. Проблема в том, что вы используете JPanel, и вы никогда не сможете смотреть видео там, вместо этого вы должны использовать Canvas. Это то, что работает для меня:

Canvas canvas = new Canvas(); 
    MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(); 
    CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas); 
    EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer(); 
    mediaPlayer.setVideoSurface(videoSurface); 

    mediaPlayer.playMedia(String with the name of the file); 

Я использую JDK 1.6 и 2.1 VLCJ

Если вы используете IDE просто поместите Canvas точно так, как вы разместили JPanel и удалить первую строку.

Удача

 Смежные вопросы

  • Нет связанных вопросов^_^