Как изменить имена строк и столбцов таблицы в Matlab - PullRequest
0 голосов
/ 28 июня 2011

Я создал графический интерфейс в Matlab, и вот как это выглядит:

enter image description here

Мне нужно знать, могу ли я изменить имена строк и столбцов таблицы во время выполнения, а не какое-то статическое имя.

Есть ли способ сделать это или альтернативно, как я могу сделать это по-другому?

Ответы [ 2 ]

4 голосов
/ 28 июня 2011

Если ваш GUI не построен с использованием GUIDE, вы можете установить / изменить подходящие свойства, как это (прямо из http://www.mathworks.com/help/techdoc/ref/uitable.html):

f = figure('Position',[200 200 400 150]);
dat = rand(3); 
cnames = {'X-Data','Y-Data','Z-Data'};
rnames = {'First','Second','Third'};
t = uitable('Parent',f,'Data',dat,'ColumnName',cnames,... 
            'RowName',rnames,'Position',[20 20 360 100]);

Затем вы можете изменить имена столбцов во время выполнения, используя:

cnames = {'Z-Data','Y-Data','X-Data'};
set(t,'ColumnName',cnames);

Осталось только решить, какое событие вызовет эту модификацию, и написать соответствующую функцию обратного вызова. Если вы могли бы дать некоторые подробности о графическом интерфейсе, это может быть полезно.

Если вы строитеВаш GUI через GUIDE, я не знаю, возможно ли это (думаю, но я обычно предпочитаю избегать GUIDE, поэтому мои знания ограничены в этой области).

ОБНОВЛЕНИЕ:

В качестве примера я написал небольшой фрагмент кода, который показывает это в действии. В этом случае событие, инициирующее изменение имен столбцов, представляет собой кнопку, но это может быть что угодно, надеюсь, это поможет.

% GUI
function so_uitable
% Layout
figure('units','normalized','position',[0.1 0.1 0.5 0.5],'tag','figure');
data=guihandles(gcf);
uitable('parent',data.figure,'units','normalized', ... 
    'Position', [0.1 0.1 0.35 0.8],'tag','table');
uicontrol('style','pushbutton','string','Change columns names', ... 
    'parent',data.figure,'units','normalized', ... 
    'Position',[0.55 0.8 0.35 0.1],'tag','button', ... 
    'callback',@button_callback);
data=guihandles(gcf); 
% Data
data.matrix=rand(3);
data.cnames={'X-Data','Y-Data','Z-Data'};
set(data.table,'data',data.matrix,'ColumnName',data.cnames);
guidata(gcf,data);
end
% Callback
function button_callback(obj,event)%#ok
data=guidata(gcbf);
n=length(data.cnames);
prompt=cell(n,1);
answer=inputdlg(prompt,'Change columns names',1,data.cnames);
if(~isempty(answer))
    data.cnames=answer;
    set(data.table,'ColumnName',data.cnames);
end
guidata(gcbf,data);
end
0 голосов
/ 23 июня 2017

Я создал таблицу, используя GUIDE, и следующая строка кода смогла успешно установить имена строк:

set(data.table, 'ColumnName',data.cnames);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...