2011-01-05 51 views
1

我正在構建Eclipse RCP應用程序。我想在其中一個視圖中嵌入視頻供稿。我正在使用Java Media Framework來構建視頻源。是的,我的工作要求我成爲受虐狂。SWT視圖內的視頻Swing JPanel

當我將視頻代碼作爲獨立的Swing應用程序運行時,視頻供稿面板(Swing JPanel)以正確的320 x 240像素大小顯示。當我使用SWT_AWT類在Eclipse RCP中運行相同的代碼時,視頻饋送面板會減少到80 x 60.

我已經在Swing視頻供稿面板上嘗試過setPreferredSizesetMinimumSize。沒有什麼變化。

我試過setBoundssetSize在SWT複合材料上。沒有什麼變化。

是否有人在SWT視圖中嵌入了Swing視頻源?

是否有人在SWT視圖中嵌入了Swing組件,並指定了Swing組件的大小?

回答

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複合。

接下來,我定義了一個SWT CLabel來填充Composite。我使用了CLabel,因爲我在整個SWT視圖的其餘部分使用了CLabels。 dummyVideo是我創建的JPG。 JPG是240 x 180像素。

然後,我定義了AWT框架,並用Swing視頻面板填充了它。首先定義一個JApplet是我從Eclipse網站上獲得的一個提示。

使用JPG就像在程序代碼中使用幻數,而不是將它們定義爲字段。但至少JPG技巧奏效了。