JPanel上的文本叠加

时间:2014-09-25 00:18:10

标签: java swing vlcj

我用VLCj编写了一个媒体播放器; 我正在尝试复制VLC播放器,这样当按下空格键时,屏幕上会短暂显示“播放”字样。这可能吗?

我如何看待这个临时叠加?

1 个答案:

答案 0 :(得分:2)

使用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测试源中的各种示例中得到证明。有选框,轻量级和重量级叠加的测试示例。

但是使用选框是最简单的推荐方法。