2012-05-27 107 views
1

我目前處於有兩件作品想要合併的位置。我有一個運行在JFrame中的簡單媒體播放器和一個GUI,我希望將視頻播放添加到JPanel上。使用VLCJ將視頻播放器添加到Java中的JPanel

的代碼,它創建的視頻播放窗口如下:

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/)。如果編碼如圖所示,那第二個代碼段應該編譯或顯示不同的錯誤。順便說一句''setBounds(..'使用佈局,以避免後來的問題 –

回答

1

首先,它看起來像你的vidPanel是一個局部變量,如果你需要從其他方法來訪問它應該是一個字段。這是一個非常基本的Java - 任何初學者教程都應該涵蓋這一點。 VLCJ不是最簡單的使用方法,如果你對基本原理不清楚,你可能會解散。其次,在你走得太遠的軌道之前,嵌入式VLCJ播放器不能與JPanel一起工作,只是本地的AWT畫布 - 所以你需要使用它。

+0

感謝您的意見。我花了很多時間來刷新自己的基礎知識,並重組我的項目,以便我可以實現我所需的實施:) – jazibobs

0

首先,我認爲vidPanel被定義爲一個局部變量,通過在類範圍內定義(不是在方法中)使其成爲一個成員字段。

這不是你如何在真正的可維護代碼中做的,而是爲了快速解決你的問題:在MainWindow中定義一個getVidPanel()函數,它返回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只需將一個帆布完全按照您放置JPanel並刪除第一行。

祝你好運

相關問題