我正在使用C ++ API启动MATLAB(通过engOpenSingleUse)。一切都很好。但我想将窗口的标题从“MATLAB命令窗口”更改为其他内容。
我经常打开4或5个,如果我的程序崩溃,偶尔会有一个孤儿。如果我可以更改标题,我会更好地了解哪一个是哪个。
是否有可以执行的MATLAB命令(通过engEvalString)执行此操作?
答案 0 :(得分:10)
对于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/
答案 1 :(得分: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')
您可以使用其他测试(窗口类等)来识别感兴趣的窗口。