Xuggler将控件添加到VideoImage窗口

时间:2014-08-28 20:39:30

标签: java xuggler

我是Xuggler的新手,我正在使用它在Windows环境中播放一些视频。我希望用户在我拍摄图纸的视频上绘制,然后将它们保存到数据库中。我有视频播放,我可以画它,但我有一个问题,我无法弄清楚如何将控件附加到VideoImage。我正在编写的代码如下,问题是我添加的任何控件都覆盖了整个屏幕。这就像“setBounds”没有效果,也没有“setMaximumSize”。

        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类还有一个我自己用来附加控件的“add”函数。我对两个电话都有同样的效果。我的面板在整个屏幕上拉伸并隐藏视频。我在视频解码循环中调用此代码,它将解码后的图像发送到屏幕以及创建窗口时。无论如何都没有运气。

我的问题是为什么会发生这种情况?有没有人知道可能导致这种情况的Xuggler或Java GUI组件的任何特性?

编辑0

我刚刚发现了一些东西。我在mScreen(VideoImage类型)中将布局管理器设置为null,并且我的面板正确显示。现在出现的问题是视频已经消失。我认为这是在左上方,因为我看到了一些我认为是视频底部但我无法分辨的情况。

/编辑0

编辑1

我发现了另一个小小的问题。正在使用的LayoutManager是BorderLayout。我可以将内容添加到主内容窗格并指定BorderLayout中的位置。下面我将我的面板添加到SOUTH位置。我在南方位置增加了一个红色区域,高度为10像素,横跨整个屏幕。

    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);

/编辑1

编辑2

我明白了。如果我离开面板并开始添加它,我可以添加我想要的控件。

/ EDIT2

1 个答案:

答案 0 :(得分: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);

这就是我做到的。