У меня проблема: у меня есть 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, чтобы нарисовать все строки. Любые другие идеи?