私は最終的に、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 を定義しました。CLabel を使用したのは、SWT ビューの残りの部分で CLabels を使用しているためです。 dummyVideo
私が作成したJPGです。JPG は 240 x 180 ピクセルです。
次に、AWT フレームを定義し、Swing ビデオ パネルで埋めました。最初に JApplet を定義するというのは、私が Eclipse の Web サイトから得たヒントです。
JPG を使用することは、フィールドとして定義するのではなく、プログラム コードでマジック ナンバーを使用するようなものです。しかし、少なくとも JPG のトリックは機能しました。