Вопрос

У меня есть проблема: в моем приложении есть JMF-Videoplayer, и я хочу опираться на него (пока видео продолжается). Проблема, которую у меня есть, заключается в том, что я использую JlayeredPane, где я добавляю видеопроводник-контроль на Layer.content_Layer (index 0) и jPanel (setoPaque (false)) на Layer.Modal_Layer (Index 300).

Что происходит, когда я добавляю JPanel, она не непрозрачна, но я вижу нарисованные линии, но не видео. Если я добавляю JPanel раньше (не изменил индекс слоя), я добавляю видеоконтроль видео, тогда я вижу видео, но не нарисованные линии.

Есть ли кто -то идея, почему это не работает и как я могу заставить его работать?

Я подумал о том, чтобы добавить ActionListener в компонент видеоконтроля, и все время меняется изображение, я воспринимаю это изображение и нарисую его как фон на JPanel, но я боюсь, что это будет стоить мне драгоценного времени.

Мой код выглядит так:

        Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
        mediaPlayer = Manager.createRealizedPlayer(url);

        this.videoPane = new JLayeredPane();
        this.videoPane.setLayout(new BorderLayout());            

        // get the components for the video and the playback controls
        this.video = mediaPlayer.getVisualComponent();
        this.controls = mediaPlayer.getControlPanelComponent();

        this.drawPanel = new JLabel();
        this.drawPanel.setSize(video.getWidth(), video.getHeight());
        this.drawPanel.setOpaque(false);

        if ( video != null )
           this.videoPane.add(video, BorderLayout.CENTER, JLayeredPane.FRAME_CONTENT_LAYER);

        if ( controls != null )
           this.videoPlayerPanel.add( controls, BorderLayout.SOUTH);

        this.videoPane.add(drawPanel, BorderLayout.CENTER, JLayeredPane.MODAL_LAYER);
        this.videoPlayerPanel.add(videoPane, BorderLayout.CENTER);

VideoPlayerPanel также является JPanel, которая содержит JlayeredPane ... как вы можете видеть.

РЕДАКТИРОВАТЬ: Хорошо, я провел некоторые исследования и узнал, что

mediaPlayer.getVisualComponent();

Возвращает java.awt.component, и такие компоненты не поддерживают непрозрачность - возможно, это причина, по которой я не могу видеть или видеть только нарисование.

Поэтому в настоящее время я пытаюсь привлечь непосредственно на видеокомпонент, добавив ее на индивидуальную панель, где я переопределяю метод краски, чтобы нарисовать все линии. Есть другие идеи?

Это было полезно?

Решение

ответил ответом на это вопрос.

Используя 2 jinternalframes, где легкий компонент находится на одной раме, а тяжеловеса-Jpanel с другой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top