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
Ö.K alors GlassPane ne fonctionne pas, mais JLayer peut superposer un conteneur lourd – mKorbel