2013-06-05 1 views
1

Comment ajouter JLabel avec un fond transparent sur vlcj MediaPlayer?Ajout d'un composant Swing transparent sur le MediaPlayer vlcj supérieur?

Je mets la source ci-dessous, mais cela ne fonctionne pas comme il se doit, car JLabel n'a pas d'arrière-plan transparent.

import com.sun.jna.NativeLibrary; 
import javax.swing.*; 
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent; 
import uk.co.caprica.vlcj.runtime.RuntimeUtil; 

class VideoExample extends JFrame { 

    private EmbeddedMediaPlayerComponent mediaPlayerComponent; 

    public VideoExample(String path) { 
     super("Простой видео плеер"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(640, 480); 

     //Create JLayeredPane 
     JLayeredPane mainLayer = new JLayeredPane(); 
     mainLayer.setSize(640,480); 

     //Create MediaPlayer on background 
     mediaPlayerComponent = new EmbeddedMediaPlayerComponent(); 
     mediaPlayerComponent.setLocation(0, 0); 
     mediaPlayerComponent.setSize(mainLayer.getSize()); 

     //Create MediaPlayer on foreground 
     JLabel label = new JLabel("LABEL", JLabel.CENTER); 
     label.setBounds(100, 100, 200, 100); 
     label.setOpaque(false); 

     mainLayer.add(mediaPlayerComponent, JLayeredPane.DEFAULT_LAYER); //add mediaPlayer in DEFAULT_LAYER 
     mainLayer.add(label, JLayeredPane.PALETTE_LAYER); //add label in PALETTE_LAYER 
     add(mainLayer); // add JLayeredPane in JFrame 

     setVisible(true); 
     mediaPlayerComponent.getMediaPlayer().playMedia(path); 
    } 

    public static void main(String[] args) { 
     NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), System.getProperty("user.dir") + "/lib/vlc64"); 
     final String mrl = "D:\\Candlelight_QT.mov"; 
     new VideoExample(mrl); 
    } 
} 

Ceci est le résultat:

The result http://vitamin.vipdesign.com.ua/1n7tJ.jpg

Répondre

2

Vous devez prendre le temps de lire le vlcj wiki

Vous ne pouvez pas ajouter simplement un JComponent transparent léger sur le dessus de le composant Canvas de surface vidéo lourd - cela ne fonctionnera pas.

Ce qui est ce que je doutais de la poste plus tôt sur le même sujet

Découvrez Overlaying Graphics pour plus de détails

+0

Ö.K alors GlassPane ne fonctionne pas, mais JLayer peut superposer un conteneur lourd – mKorbel

Questions connexes