2016-09-07 23 views
0

アプリケーション全体を終了することなく新しいフレームを閉じる方法は? Xボタンをクリックすると、最も簡単な方法があります。 ありがとうございます。追加のウィンドウを閉じる(PApplet)

ControlFrame cf; 
void setup() 
{ 
cf = new ControlFrame(this,500,500, "cf name"); 
} 

class ControlFrame extends PApplet 
{ 
    int w,h; 
    PApplet parent; 

    public ControlFrame(PApplet _parent, int _w, int _h, String _name) 
    { 
    super(); 
    parent=_parent; w=_w; h=_h; 
    PApplet.runSketch(new String[]{this.getClass().getName()},this); 
    } 
    public void settings() 
    { size(w,h); } 
} 

答えて

0

注:あなたの質問は、実際にはControlP5とは関係ありません。

ステップ1:ネイティブウィンドウへの参照を取得します。どのようにこれを行うかは、使用しているレンダラによって異なります。デフォルトのレンダラを使用している場合、それは次のようになります。

Frame frame = ((SmoothCanvas) ((PSurfaceAWT)surface).getNative()).getFrame(); 

ステップ2:その後、アプリケーション全体をquititngせずに、それを隠すためにそのFramedispose()を呼び出すことができます。

frame.dispose(); 

はすべて一緒にそれを置く、それは次のようになります。

import java.awt.Frame; 
import processing.awt.PSurfaceAWT; 
import processing.awt.PSurfaceAWT.SmoothCanvas; 

ControlFrame cf; 
void setup() 
{ 
    cf = new ControlFrame(this, 500, 500, "cf name"); 
} 

class ControlFrame extends PApplet 
{ 
    int w, h; 
    PApplet parent; 

    public ControlFrame(PApplet _parent, int _w, int _h, String _name) 
    { 
    super(); 
    parent=_parent; 
    w=_w; 
    h=_h; 
    PApplet.runSketch(new String[]{this.getClass().getName()}, this); 

    } 
    public void settings() 
    { 
    size(w, h); 
    } 

    public void draw(){ 
    //needed for mousePressed 
    println(millis()); 
    } 

    public void mousePressed(){ 
    Frame frame = ((SmoothCanvas) ((PSurfaceAWT)surface).getNative()).getFrame(); 
    frame.dispose(); 
    } 

} 

ステップ3:あなたはまた、不要な計算を防ぐためにnoLoop()を呼び出すこともできますので、あなたの第二のスケッチは、実行を継続することを注意。

+0

お返事ありがとうございます。質問はContolP5とは関係がないため、私はフラグを編集しました。このウィンドウを私のプログラムのUIのcontrolP5として使うので、noLoop()では動作しません。 解決方法がうまく機能しているため、「ライブラリが見つかりませんでした。processing.awt.PSurfaceAWT」というエラーがあります。 –

+0

@MaciejWójcikこれは誤りではありません。それは単なる警告です。あなたはそれを無視することができます。 –

関連する問題