2014-08-28 101 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類型)中將佈局管理器設置爲null,並且我的面板正確顯示。現在的問題似乎是視頻已經消失。我認爲這是在左上方,因爲我看到了一些我認爲是視頻底部的條子,但我無法說清楚。

/EDIT 0

EDIT 1

我發現了另一個小珍聞。正在使用的LayoutManager是一個BorderLayout。我可以將內容添加到主內容窗格中,並指定BorderLayout中的位置。下面我將我的面板添加到南方的位置。我在南部的位置添加了一個紅色區域,高度爲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); 

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

這是我做到了。