java - SWT View 中的视频 Swing JPanel

标签 java swing swt awt jmf

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

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

我已在 Swing 视频源面板上尝试过 setPreferredSizesetMinimumSize。没有任何改变。

我已经在 SWT 组合上尝试了 setBoundssetSize。没有任何改变。

有人在 SWT View 中嵌入了 Swing 视频源吗?

有人在 SWT View 中嵌入了 Swing 组件,并指定了 Swing 组件的大小吗?

最佳答案

我终于想出了如何“欺骗”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 View 的其余部分中都使用了 CLabels。 dummyVideo 是我创建的 JPG。 JPG 为 240 x 180 像素。

然后,我定义了 AWT 框架,并用 Swing 视频面板填充它。首先定义 JApplet 是我从 Eclipse 网站上学到的一个技巧。

使用 JPG 就像在程序代码中使用魔数(Magic Number),而不是将它们定义为字段。但至少 JPG 技巧奏效了。

关于java - SWT View 中的视频 Swing JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608039/

相关文章:

java - 什么时候菱形语法在 Java 8 中不起作用?

JAVA 将大文件拆分为多部分 ZIP。如何?

java - 在 ActionListener 中持续设置 JTextArea 文本

java - SWT:如何右对齐工具栏中的项目

java - SWT Popup Composite 意外处置

java - 将非泛型方法转换为泛型方法

java - 收集对象数组的属性列表

java - 单击按钮后,它在我的面板中没有显示任何形状

java - JComponent 不会显示图像

java - 在 UI 线程中执行长时间操作时的 SWT 进度对话框?