2016-12-01 11 views
1

EclipseのJavaプロジェクトで、PAppletを拡張してProcessingスケッチを実行するクラスを作成しています。Eclipseでの処理の使用:残りのウィンドウを閉じることなくスケッチを閉じますか?

まず私はJFrameのログイン画面を持ち、そこにユーザがログインした後、私はスケッチを開始する

PApplet.main("Game"); //"Game" is the class that extends PApplet 

を呼び出します。

ゲームが終了したら、元のJFrameウィンドウではなくスケッチウィンドウを閉じたいと思います。

通常、私は処理に

exit(); 

を呼ぶだろうが、これは、アプリケーション全体(つまり、すべてのウィンドウ)を閉じます。

私も

dispose(); 

を試してみましたが、これは何もしません。

私は

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

のようなもののためではなく、PAppletを探していますね。

+0

処理のどのバージョンを使用していますか? –

+0

あなたはこれを理解できましたか? –

答えて

1

まず、スケッチを保持しているインスタンスを取得する必要があります。

Game game = new Game(); 
String[] args = {}; 
PApplet.runSketch(args, game); 

今、あなたはあなたのスケッチインスタンスへの参照を持っていることを、あなたは内部のウィンドウに得るためにそれを使用することができます:それはrunSketch()関数を使用して、代わりに直接main()を呼び出すことを意味します。どのように使用するかは、使用しているレンダラーによって異なりますが、the Processing JavaDocthe Processing source codeの組み合わせで把握できます。

ここではデフォルトのレンダリング使用してテストされていない例です:

私のよう
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
frame.setVisible(false); 

:今、あなたは親ウィンドウを持っていることを、あなたは含めて、それをあなたがやりたいことができ

PSurface surface = game.getSurface(); 
SmoothCanvas smoothCanvas = (SmoothCanvas)surface.getNative(); 
JFrame frame = (JFrame) smoothCanvas.getFrame(); 

を私はこのコードをテストしておらず、これはあなたが使用しているレンダラーに依存していると言いますが、ソースコードとJavaDocを使って何が起こっているのかを理解するプロセスは、あなたは何ですか?しなければなりません。

+0

PApplet.runSketch(args、game); yield: "Usage:PApplet [options] [スケッチ引数] 説明については、Javadoc for PAppletを参照してください。 –

+0

@EricNewsomどのバージョンのProcessingを使用していますか? [ここ](http://processing.github.io/processing-javadocs/core/processing/core/PApplet.html#runSketch-java.lang.String:A-processing.core.PApplet-)は、呼び出す必要がある関数のJavaDoc。 –

関連する問題