2013-06-05 15 views
1

Как добавить JLabel с прозрачным фоном поверх vlcj MediaPlayer?Добавление прозрачного компонента Swing на верхний слой vlcj MediaPlayer?

Я помещаю источник ниже, но он не работает должным образом, потому что JLabel не имеет прозрачного набора фона.

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

Это результат:

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

ответ

2

Вы должны взять время, чтобы прочитать vlcj wiki

Вы не можете просто добавить легкий прозрачный JComponent на вершине сверхтяжелый компонент холста видеоизображения - он не будет работать.

Что я и подозревал от предыдущей публикации на ту же тему

Заканчивать Overlaying Graphics для более подробной информации

+0

Годится то GlassPane не работает, но JLayer может накладывать супертяжелый контейнер – mKorbel

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