Есть ли способ изменить заголовок командного окна MATLAB? - PullRequest
4 голосов
/ 17 декабря 2009

Я использую C ++ API для запуска MATLAB (через engOpenSingleUse). Все работает нормально Но я бы хотел изменить заголовок окна с «Командного окна MATLAB» на что-то другое.

У меня часто 4 или 5 из них открыты, и иногда один становится осиротевшим, если моя программа падает. Если бы я мог изменить название, у меня был бы лучший шанс узнать, какой из них какой.

Есть ли команда MATLAB, которую я мог бы выполнить (через engEvalString), которая бы это делала?

Ответы [ 2 ]

10 голосов
/ 18 декабря 2009

Для 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 голос
/ 18 декабря 2009

Попробуйте написать код непосредственно для классов Java AWT. Это может быть более гибким и работать в движке Matlab, работающем под C ++. (Не проверял это в этом контексте, так как я не использую двигатель.)

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')

Вы можете использовать другие тесты (класс окон и т. Д.) Для идентификации интересующих окон.

...