2010-02-11 16 views
1

У меня проблема: у меня есть JMF-Videoplayer в моем приложении, и я хочу рисовать на нем (пока видео продолжается). Проблема у меня в том, что я использую JLayeredPane, где я добавляю VideoPlayer-Control на Layer.Content_Layer (индекс 0) и JPanel (setOpaque (false)) на Layer.Modal_Layer (индекс 300).Java: рисовать линии на JMF Lightweight_Rendered Player

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

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

Я думал о добавлении ActionListener к компоненту видеоконтроля, а в evertime изображение меняется, я беру это изображение и рисую его как фон на 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 ... как вы можете видеть.

Edit: Хорошо я ставлю некоторые исследования в него и выяснили, что

mediaPlayer.getVisualComponent(); 

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

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

ответ

0

ответ на этот вопрос question.

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

 Смежные вопросы

  • Нет связанных вопросов^_^