Видео Swing JPanel в представлении SWT - PullRequest
1 голос
/ 05 января 2011

Я создаю приложение Eclipse RCP.Я хочу вставить видео на один из просмотров.Я использую Java Media Framework для создания видео канала.Да, моя работа требует, чтобы я был мазохистом.

Когда я запускаю свой видеокод в качестве отдельного приложения Swing, панель видеопотока (Swing JPanel) отображается с правильным разрешением 320 x 240 пикселей.размер.Когда я запускаю тот же код в Eclipse RCP с использованием класса SWT_AWT, панель видеопотока уменьшается до 80 x 60.

Я пробовал setPreferredSize и setMinimumSize на панели видеопотока Swing.Ничего не меняется.

Я пробовал setBounds и setSize на композите SWT.Ничего не меняется.

Кто-нибудь встраивал видео-поток Swing в представление SWT?

Кто-нибудь встраивал компонент Swing в представление SWT и указывал размер компонента Swing?

1 Ответ

0 голосов
/ 06 января 2011

Я наконец-то понял, как можно «обмануть» SWT для создания видеопотока более разумного размера.

Я отобразил изображение JPG правильного размера, затем наложил его на AWT / Swingcode.

Вот код, который я использовал:

        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 для заполнения составной части.Я использовал CLabel, потому что я использую CLabel в остальной части представления SWT.dummyVideo - это JPG, который я создал.Размер JPG составляет 240 x 180 пикселей.

Затем я определил кадр AWT и заполнил его видеопанелью Swing.Сначала определить JApplet - это совет, который я взял с веб-сайта Eclipse.

Использование JPG похоже на использование магических чисел в программном коде, а не на их определение в качестве полей.Но по крайней мере трюк с JPG сработал.

...