4

C++ API を使用して MATLAB を起動しています (engOpenSingleUse 経由)。すべてうまくいっています。しかし、ウィンドウのタイトルを「MATLAB コマンド ウィンドウ」から別のものに変更したいと考えています。

多くの場合、それらのうち 4 つまたは 5 つを開いていますが、プログラムがクラッシュすると、1 つが孤立することがあります。タイトルを変更できれば、どれがどれであるかをよりよく知ることができます。

これを行うために (engEvalString を介して) 実行できる MATLAB コマンドはありますか?

4

2 に答える 2

11

Matlab 7の場合:

jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
jDesktop.getMainFrame.setTitle('my new title');

*または特にコマンドウィンドウの場合:

cmdWin = jDesktop.getClient('Command Window');
cmdWin.getTopLevelAncestor.setTitle('my new title');

Matlab 6の場合:

jDesktop = com.mathworks.ide.desktop.MLDesktop.getMLDesktop;
jDesktop.getMainFrame.setTitle('my new title');

*またはコマンドウィンドウの場合:

cmdWin = jDesktop.getClient('Command Window');
cmdWin.getTopLevelWindow.setTitle('my new title');


その他の関連する文書化されていないデスクトップ機能については、http:
//UndocumentedMatlab.com/blog/tag/desktop/で説明されています。

于 2009-12-17T21:43:14.127 に答える
1

Java AWT クラスに対して直接コーディングしてみてください。これはより柔軟で、C++ で実行されている Matlab エンジン内で動作する可能性があります。(私はエンジンを使用していないため、そのコンテキストではテストしていません。)

function change_win_title(oldName, newName)

wins = java.awt.Window.getOwnerlessWindows();
for i = 1:numel(wins)
    if isequal(char(wins(i).getTitle()), oldName)
        wins(i).setTitle(newName);
    end
end

このように使用します。

change_win_title('MATLAB Command Window', 'My new window name')

他のテスト (ウィンドウ クラスなど) を使用して、関心のあるウィンドウを識別することができます。

于 2009-12-18T18:57:01.943 に答える