我是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