1

私は現在、2つの作品を組み合わせる立場にあります。JFrameで実行されている単純なメディアプレーヤーと、JPanelでビデオ再生を追加したいGUIがあります。

ビデオプレーヤーウィンドウを作成するためのコードは次のとおりです。

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を解決できないか、フィールドではありません」というエラーメッセージが表示されます

誰かが私がこれを修正する方法を知っていますか?

4

3 に答える 3

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);

JDK1.6とVLCJ2.1を使用しています

IDEを使用している場合は、JPanelを配置したのとまったく同じようにCanvasを配置し、最初の行を削除します。

幸運を

于 2012-05-30T01:59:19.403 に答える
1

まず、あなたはローカル変数のように見えvidPanel、他のメソッドからアクセスする必要がある場合はフィールドである必要があります。これはJavaのかなり基本的な部分です-初心者のチュートリアルでこれをカバーする必要があります。VLCJは使用するのが最も簡単なものではなく、基本を明確に理解していないと、行き詰まる可能性があります。

第二に、そのトラックを行き過ぎてしまう前に、埋め込まれたVLCJプレーヤーはJPanelでは機能せず、ネイティブのAWT Canvasでしか機能しないため、代わりにそれを使用する必要があります。

于 2012-05-28T16:14:47.853 に答える
0

まず第一にvidPanel、ローカル変数として定義されているように思われます。クラススコープ(メソッドではなく)で定義することにより、メンバーフィールドにします。

これは、実際の保守可能なコードで行う方法ではなく、問題をすばやく解決するためのgetVidPanel()ものです。MainWindowで関数を定義して。を返しますvidPanel

次に、誤った行の代わりに次を使用します。

MainWindow aMainWindowInstance = new MainWindow();
aMainWindowInstance.getVidPanel().add(vidComp);
于 2012-05-27T21:58:55.163 に答える