gpt4 book ai didi

java - 在 VLCJ 播放的视频上添加 JTextField?

转载 作者:行者123 更新时间:2023-11-30 07:32:03 27 4
gpt4 key购买 nike

我试图在到达特定时间时在视频顶部添加 JTextField。我正在使用这段代码:

        frame.setLocation(100, 100);
frame.setSize(0, 0);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setLayout(null);

Canvas c = new Canvas();
c.setBackground(Color.black);
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(c, BorderLayout.CENTER);
frame.add(p, BorderLayout.CENTER);

mediaURL = "D:\\Desktop\\movie.mp4";

MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(frame));
mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c));
scoresFrame.setVisible(true);
mediaPlayer.toggleFullScreen();
mediaPlayer.setEnableMouseInputHandling(false);
mediaPlayer.setEnableKeyInputHandling(true);
mediaPlayer.prepareMedia(mediaURL);
//mediaPlayer.setRepeat(true);
mediaPlayer.play();

mediaPlayer.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
public void timeChanged (MediaPlayer mediaPlayer , long time) {
if (time > 1000 && time < 1500) {
frame.setLayout(null);
mediaPlayer.pause();
JTextField text = new JTextField("test");
text.setBounds(250, 370, 50, 50);
frame.add(text);
}
}
});

JTextField 根本不显示。问题可能是什么?以及在特定时间暂停视频的任何其他建议?因为使用这段代码:

public void timeChanged (MediaPlayer mediaPlayer , long time) {
if (time > 1000 && time < 1500) {
}
}

这似乎不是最好的方法。感谢您的帮助。

最佳答案

您不能混合轻量级组件(您的 JTextField)和重量级组件(您用于 vlcj 的 Canvas)。

你有两个选择...

  1. 使用透明覆盖层,将 JTextField 添加到覆盖层(vlcj 测试源中的示例显示了这一点)
  2. 使用“直接”媒体播放器,您自己将视频渲染到轻量级组件中,即 JPanel 或其他东西(同样,vlcj 测试源中有示例显示了这一点)

关于java - 在 VLCJ 播放的视频上添加 JTextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35971338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com