尝试在SWT中添加PApplet
时遇到问题,当它应该呈现PApplet
时,它会出现一个空窗口。即PApplet
单独工作,但不在SWT窗口中工作。
我认为只需将PApplet
添加到框架中,最初应该使用Eclipse中的SWT教程代码。显然它并不那么容易。这是我的代码,其中MyPApplet
是自定义的PApplet
:
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);
Frame frame = SWT_AWT.new_Frame(composite);
PApplet pApplet = new MyPApplet();
frame.add(pApplet);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
我错过了什么吗?
答案 0 :(得分:3)
我已经制作了关于如何在Eclipse中融合Processing与SWT的小指南: http://christian.liljedahl.dk/guides/processing-and-swt-in-eclipse
我希望这能为你解决。
我的“技巧”是有一个用于处理内容的窗口,以及一个带有UI的单独窗口。
答案 1 :(得分:2)
我认为你所缺少的是pApplet.init(); 请参阅课程文档:http://dev.processing.org/reference/core/javadoc/processing/core/PApplet.html
答案 2 :(得分:1)
我认为有另一种方法可以实现这一目标。 使用Swing组件作为适配器,它喜欢: 将PApplet添加到JComponent(如JInternalFrame)中,然后将此JComponent嵌入到SWT Composite中。
我已经做了一些练习,而且效果很好......
我也在博客上写了一些关于这个主题的摘要: http://blog.csdn.net/godoorsun/article/details/6747589
(顺便说一句,这篇文章是用中文写的:(也许你可以通过Google Translator阅读,但该文章的示例代码很容易理解)
答案 3 :(得分:0)
注意:这仅适用于处理2.2.1
1 而不适用于3+
2
在OPs代码中,有两个缺失的语句:
pApplet.init()
Layout
设置为FillLayout
,GridLayout
等shell,以便shell.setLayout(new FillLayout())
基本工作代码:
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);
Frame frame = SWT_AWT.new_Frame(composite);
PApplet pApplet = new MyPApplet();
frame.add(pApplet);
pApplet.init();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
1 在我的情况下,我试图将一个applet嵌入到基于Maven的SWT项目中,所以我只能在{{{}中使用最后一个(也是唯一一个)可用于2.X系列的处理版本。 1}}:
pom.xml
2 处理3不兼容的原因可以是here和here,基本上是代码的重大重组。我试图将Processing canvas嵌入到SWT应用程序中失败。