SWT に処理 PApplet を追加する方法
-
18-09-2019 - |
質問
を追加しようとすると問題が発生します PApplet
SWT に変換すると、単にレンダリングする必要があるときに空のウィンドウが表示されます。 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();
}
何かが足りないのでしょうか?
解決
私は、EclipseのSWTで処理を融合する方法については、この小さなガイドを行っています。 http://christian.liljedahl.dk/guides/processing-and-swt -in-日食の
私は、これはあなたのためにそれを解決したいと考えています。
私の「トリック」は、一つの処理のもののためのウィンドウ、および独自のスレッドでUIを持つ別々のウィンドウを持つことです。
他のヒント
私はあなたが不足しているすべてのpApplet.init()だと思います。 ます。http://dev.processingクラスのドキュメントを参照してください.ORG /参照/コア/ Javadocの/処理/コア/ PApplet.html の
私はそれを達成するための別の方法があると思います。 好きなアダプタとしてSwingコンポーネントを使用します: JInternalFrameのようなJComponentのにPAppletを追加し、その後、SWTコンポジットにこのJComponentを埋め込みます。
私はそれにいくつかのプラクティスを作りました、それが正常に動作します..
とも私はこのトピックに関するいくつかの要約をブログに書いています: http://blog.csdn.net/godoorsun/article/details/6747589する
(ところで、この記事は、中国:(で書かれている、多分あなたはGoogleの翻訳を通してそれを読み取ることができますが、その記事のサンプルコードは、理解しやすいです)。
注記:これは処理でのみ機能します 2.2.1
1 そしてそうではありません 3+
2
OP コードには、次の 2 つのステートメントが欠落しています。
- として ユーザー176840 に電話する必要があると言いました。
pApplet.init()
殻を開ける前に - また、
Layout
のようにシェルにFillLayout
,GridLayout
, 、など、次のようなものです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 私の場合、Maven ベースの SWT プロジェクトにアプレットを埋め込もうとしていました。そのため、2.X シリーズで利用可能な最後の (そして唯一の) 処理バージョンのみを使用できます。 pom.xml
:
<dependency>
<groupId>org.processing</groupId>
<artifactId>core</artifactId>
<version>2.2.1</version>
</dependency>
2 処理3が非対応の理由がわかる ここ そして ここ, 、基本的にはコードを大幅に再構成します。SWT アプリケーションに処理キャンバスを埋め込もうとしましたが、失敗しました。