我终于想通了如何“欺骗”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 Composite。
接下来,我定义了一个 SWT CLabel 来填充 Composite。我使用了 CLabel,因为我在 SWT 视图的其余部分都使用了 CLabels。 dummyVideo
是我创建的 JPG。JPG 为 240 x 180 像素。
然后,我定义了 AWT 帧,并用 Swing 视频面板填充它。首先定义 JApplet 是我从 Eclipse 网站上获得的一个技巧。
使用 JPG 就像在程序代码中使用幻数,而不是将它们定义为字段。但至少 JPG 技巧奏效了。