2010-02-11 4 views
1

문제가 생겼습니다. 애플리케이션에 JMF-Videoplayer가 있고 비디오를 계속 그려 넣고 싶습니다. 내가 가진 문제점은 Layer.Modal_Layer (인덱스 300)에서 VideoPlayer-Control을 Layer.Content_Layer (인덱스 0)에 추가하고 JPanel (setOpaque (false))을 추가하는 JLayeredPane을 사용한다는 것입니다.Java : JMF Lightweight_Rendered Player에서 선 그리기

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은 또한 당신이 볼 수있는 ...의 JLayeredPane를 포함하는 JPanel의입니다.

편집 : 나는 그것으로 몇 가지 조사를 넣고

mediaPlayer.getVisualComponent(); 

이 java.awt.Component의 이러한 구성 요소는 불투명도 지원하지 않습니다 반환 발견 자 - 어쩌면 그게 내가 볼 않거나 할 수없는 이유가의를 drawPanel을 참조하십시오.

현재 저는 비디오 컴포넌트를 사용자 정의 된 패널에 추가하여 직접 그려서 모든 라인을 그리는 페인트 메소드를 재정의하려고합니다. 다른 아이디어가 있습니까?

답변

0

이 답변에 대한 답변 : question.

가중치 구성 요소가 한 프레임에 있고 중량급 구성 요소가 다른 프레임에있는 2 개의 JInternalFrames를 사용합니다.