次のメソッドが定義されているクラス管理のGUIを作成しました
function h = make_figure(this)
h = figure('CloseRequestFcn',@this.close_figure);
this.openFigures(end+1) = h;
end
function close_figure(this, src, event)
this.openFigures(this.openFigures == src) = [];
delete(src);
end
GUIの存続期間中、上記の方法を使用して、多くの図が作成され、閉じられます。今、奇妙な部分...
MATLABの[現在のフォルダー]ウィンドウで(myfigure.fig)などのFigureファイルをダブルクリックしてから閉じようとすると(GUIがまだ動作している間に)close_figure
、GUIのクラスのメソッドが実行されますh = figure('CloseRequestFcn',@this.close_figure);
。make_figure
方法!!!これは最初の奇妙な部分です。2番目の奇妙な部分は、コードの意図しない部分が実行されても、コマンドthis.openFigures(this.openFigures == src) = [];
が実際にはthis.openFigures
変更されないままであり、実際にclose_figure
はdelete(src)
それが望ましいことだけであるため、問題が発生しないことです。上記にもかかわらず、私のプログラムは動作します...上記が起こった後は奇妙です。
figure
コマンドウィンドウを押して閉じても、すべて問題なく、close_figure
メソッドが実行されないことに気づきました。この問題は、GUIのクラスによって作成された.figファイルを開いたときにのみ明らかになります。
何か案は?