java - JPanel 上的文本叠加

标签 java swing vlcj

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

我将如何显示这个临时叠加层?

最佳答案

使用 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 测试源的各种示例中进行了演示。有选取框、轻量级和重量级叠加层的测试示例。

但是使用选取框是最简单的,因此也是推荐的方法。

关于java - JPanel 上的文本叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028542/

相关文章:

javascript - ADF 根据 OutputText 值显示图像

java - Android root 访问脚本

java - 在调用 super 构造函数之前无法引用 'method'

java - 将其他视频编解码器/DVD支持添加到JavaFX 2.2

macos - Mac OSX 上的 VLCJ 不满意链接错误 (darwin/libvlc.dylib)

java - 如何将 HashMap 放入数组中? conf[0] = new HashMap<String, Object>();

Java:即使单击 "No",退出操作上的 JFrame 仍会关闭

java - 将 Javafx 嵌入到 swing 应用程序中

java - 如何检查 JTextField 中输入的值并将输入的字符串传输到字符数组?

java - 如何为 VLCJ 添加或安装 native x64 库?