我正在构建一个 Eclipse RCP 应用程序。我想在其中一个 View 中嵌入视频源。我正在使用 Java 媒体框架来构建视频源。是的,我的工作要求我成为一个受虐狂。
当我将视频代码作为独立的 Swing 应用程序运行时,视频源面板(Swing JPanel
)以正确的 320 x 240 像素大小显示。当我使用 SWT_AWT 类在 Eclipse RCP 中运行相同的代码时,视频源面板减小到 80 x 60。
我已在 Swing 视频源面板上尝试过 setPreferredSize
和 setMinimumSize
。没有任何改变。
我已经在 SWT 组合上尝试了 setBounds
和 setSize
。没有任何改变。
有人在 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/