Java: рисуют линии на игровом игроке JMF Ligeweight_Rendered
-
19-09-2019 - |
Вопрос
У меня есть проблема: в моем приложении есть 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 с другой.