2014-08-28 10 views
0

Xuggler를 처음 사용하고 Windows 환경에서 비디오를 재생할 때 사용하고 있습니다. 사용자가 그림을 찍은 다음 그림을 그려서 데이터베이스에 저장하길 원합니다. 비디오를 재생하고 그 위에 그릴 수는 있지만 VideoImage에 컨트롤을 연결하는 방법을 알 수 없다는 문제가 있습니다. 필자가 작성한 코드는 아래에 있으며 문제는 내가 추가 한 컨트롤이 전체 화면을 덮는다는 것입니다. 그것은 "setBounds"와 같은 효과가 없으며 "setMaximumSize"도 마찬가지입니다.Xuggler가 VideoImage 창에 제어 기능을 추가했습니다.

 private static VideoImage mScreen = null; 

     LayoutManager lm = mScreen.getLayout();   
     Panel controlPanel = new Panel(lm); 
     controlPanel.setBackground(Color.red);    
     controlPanel.setBounds(new Rectangle(10, 10, 10, 10)); 
     controlPanel.setMaximumSize(new Dimension(10, 10)); 

     mScreen.getContentPane().add(controlPanel); 

마지막 줄인 mScreen.getContentPane은 JFrame을 반환합니다. VideoImage 클래스에는 컨트롤을 연결하는 데 사용되는 자체의 "추가"기능이 있습니다. 두 호출에 동일한 효과가 나타납니다. 내 패널이 전체 화면에 걸쳐 펼쳐져 있고 비디오가 숨겨져 있습니다. 이 코드는 디코딩 된 이미지를 화면으로 전송할 때뿐만 아니라 창을 만들 때도 모두 비디오 디코딩 루프에서 호출합니다. 어느 쪽이든 운이 없다.

제 질문은 왜 이런 문제가 발생 했습니까? 누구든지이 문제를 일으킬 수있는 Xuggler 또는 Java GUI 구성 요소의 어떤 특이성을 알고 있습니까?

수정 0

나는 방금 뭔가를 발견했습니다. mScreen (VideoImage type)에서 레이아웃 관리자를 null로 설정하고 내 패널이 올바르게 표시됩니다. 이제 문제는 동영상이 사라진 것 같습니다. 비디오의 맨 아래에있는 것 같지만 조금은 알 수 없기 때문에 왼쪽 상단에 있다고 생각합니다.

/EDIT 0

EDIT 1

나는 또 다른 작은 재미있는 이야기를 발견했다. 사용중인 LayoutManager는 BorderLayout입니다. 기본 컨텐츠 창에 항목을 추가하고 BorderLayout에 있어야하는 위치를 지정할 수 있습니다. 아래 패널을 남쪽 위치에 추가합니다. 남쪽 부분에 10px 크기의 빨간색 영역이 추가되어 전체 화면에 걸쳐 있습니다.

Panel controlPanel = new Panel(); 
    controlPanel.setBackground(Color.red);    
    controlPanel.setBounds(new Rectangle(10, 10, 10, 10)); 
    controlPanel.setMaximumSize(new Dimension(10, 10)); 

    Container cont = mScreen.getContentPane(); 
    cont.add(controlPanel, BorderLayout.SOUTH); 

/EDIT 1

편집 2

내가 그것을 알아 냈다. 방금 패널을 나가서 추가하기 시작하면 원하는 컨트롤을 추가 할 수 있습니다.

은/EDIT2

답변

0
mScreen = new VideoImage();  

    Panel controlPanel = new Panel();    
    controlPanel.setBounds(new Rectangle(10, 10, 10, 10)); 
    controlPanel.setMaximumSize(new Dimension(10, 10)); 
    Container cont = mScreen.getContentPane(); 
    cont.add(controlPanel, BorderLayout.SOUTH); 

이것은 내가 그것을 한 방법이다.