【问题标题】:adding a JTextField on top of a video played by VLCJ?在 VLCJ 播放的视频上添加 JTextField?
【发布时间】:2016-03-13 14:15:37
【问题描述】:

我正在尝试在达到特定时间时在视频顶部添加 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) {
                    }
                }

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

【问题讨论】:

    标签: java jframe jtextfield vlcj


    【解决方案1】:

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

    你有两个选择...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-14
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多