1

我正在构建一个 Eclipse RCP 应用程序。我想在其中一个视图上嵌入视频源。我正在使用 Java Media Framework 来构建视频源。是的,我的工作要求我成为一个受虐狂。

当我将视频代码作为独立的 Swing 应用程序运行时,视频输入面板(一个 Swing JPanel)以正确的 320 x 240 像素大小显示。当我使用 SWT_AWT 类在我的 Eclipse RCP 中运行相同的代码时,视频源面板缩小到 80 x 60。

我已经尝试过setPreferredSizeSwingsetMinimumSize视频源面板。没有什么变化。

我已经尝试过setBoundsSWTsetSize复合材料。没有什么变化。

有没有人在 SWT 视图中嵌入了 Swing 视频源?

是否有人在 SWT 视图中嵌入了 Swing 组件,并指定了 Swing 组件的大小?

4

1 回答 1

0

我终于想通了如何“欺骗”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 技巧奏效了。

于 2011-01-06T15:03:28.177 回答