我終於想出瞭如何「欺騙」SWT生成更合理大小的視頻饋送。
我顯示了正確大小的JPG圖像,然後用AWT/Swing代碼覆蓋圖像。
這是我使用的代碼:
Composite videoComposite = new Composite(panel,
SWT.EMBEDDED | SWT.BORDER | SWT.NO_BACKGROUND);
videoComposite.setLayout(new FillLayout());
videoComposite.setLayoutData(new GridData(
SWT.CENTER, SWT.CENTER, true, true, 1, 1));
CLabel videoImage = new CLabel(videoComposite, SWT.SHADOW_IN);
videoImage.setImage(dummyVideo);
final Frame frame = SWT_AWT.new_Frame(videoComposite);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JApplet applet = new JApplet();
applet.setFocusCycleRoot(false);
applet.add(rabidPhoto.getVideoPanel(false));
frame.add(applet);
frame.pack();
frame.setVisible(true);
}
});
首先,我定義的SWT複合。
接下來,我定義了一個SWT CLabel來填充Composite。我使用了CLabel,因爲我在整個SWT視圖的其餘部分使用了CLabels。 dummyVideo
是我創建的JPG。 JPG是240 x 180像素。
然後,我定義了AWT框架,並用Swing視頻面板填充了它。首先定義一個JApplet是我從Eclipse網站上獲得的一個提示。
使用JPG就像在程序代碼中使用幻數,而不是將它們定義爲字段。但至少JPG技巧奏效了。