我是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
答案 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);
这就是我做到的。