2014-09-25 105 views
1

我已經使用VLCj編寫了一個媒體播放器; 我試圖複製VLC播放器,這樣當按下空格鍵時,屏幕上會短暫出現「播放」一詞。這可能嗎?JPanel上的文字覆蓋

我該怎麼去看看這個臨時覆蓋圖?

+0

這將是困難和容易出錯的,因爲VLCj使用'Canvas'作爲主視圖,所以混合Swing和AWT組件在最佳時機可能會出現問題。你有什麼嘗試? – MadProgrammer 2014-09-25 00:22:24

+0

贊[this](http://stackoverflow.com/q/6725618/230513)? – trashgod 2014-09-25 03:02:28

+0

您使用的是jvlc還是vlcj?你可能想檢查你的標籤。 – caprica 2014-09-25 06:35:38

回答

1

與vlcj做到這一點的一種方法是使用「選取框」。

選取框由本地LibVLC庫函數提供,由vlcj包裝。

第一:

import static uk.co.caprica.vlcj.player.Marquee.marquee; 

然後在你的鼠標點擊監聽器:

marquee() 
    .text("Play") 
    .location(x, y) 
    .position(libvlc_marquee_position_e.bottom) 
    .opacity(0.7f) 
    .colour(Color.white) 
    .timeout(5000) 
    .size(20) 
    .apply(mediaPlayer); 

這是API的 「建設者」 的風格,有一個帶有字幕,如個別方法的另一個API:

mediaPlayer.setMarqueeText("Play"); 
mediaPlayer.setMarqueeSize(60); 
mediaPlayer.setMarqueeOpacity(70); 
mediaPlayer.setMarqueeColour(Color.green); 
mediaPlayer.setMarqueeTimeout(3000); 
mediaPlayer.setMarqueeLocation(300, 400); 
mediaPlayer.enableMarquee(true) 

所有這一切都被記錄在vlcj的Javadoc:

http://caprica.github.io/vlcj/javadoc/3.0.0/uk/co/caprica/vlcj/player/Marquee.html http://caprica.github.io/vlcj/javadoc/3.0.0/uk/co/caprica/vlcj/player/MediaPlayer.html

還有其他辦法...

你可以嘗試用疊加在視頻的頂部絕對定位的AWT標籤,這會工作,但標籤將不會有一個透明背景。

您可以使用所謂的「直接」渲染媒體播放器(您自己渲染視頻的位置),然後您可以在視頻頂部繪製自己的圖形,或使用Swing JLabel。在這種情況下,您可以使用透明度。

您甚至可以在視頻窗口頂部覆蓋透明的頂層窗口,並在該窗口中繪製/放置標籤。

所有這些方法都在vlcj測試源中的各種示例中演示。有跑馬燈的測試例子,以及輕量級和重量級的疊加。

但使用選框是最簡單的推薦方法。

+0

這真是太好了,謝謝。 但使用全屏播放器時不起作用(與FullScreenPlayerX類似,可見VlcJ測試源)。選框出現一幀並消失。 – Ofek 2014-09-25 12:24:17

+0

您正在使用哪種方法? Builder API或其他API?如果在.apply()之前將.enable()添加到構建器API版本,它應該可以工作。我只是測試它,它很好。 – caprica 2014-09-25 16:19:29