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