我在matlab中以table()
命令生成的表格的形式保存来自我系统的报告。为了显示这些表,我使用的是disp(myTable)
。当我只在shell中查看表时,这很好。
但是,现在我希望构建一个GUI来显示这些表以及图表和其他信息。我发现我可以通过
在静态文本GUI元素中显示字符串 set(handles.staticText1, 'String', 'My text! Yay!')
。
但是,我无法弄清楚将保存为表格的数据转换为字符串的简单方法。
是否有一种在GUI中显示表格的简单方法,还是需要从表格中手动提取所有列?
编辑:好的,所以我找到了一种将表格保存到字符串中的方法:
tableString=evalc('disp(table)')
但结果是一场灾难,看起来并不像我在shell中获得的格式整齐的字符串。
答案 0 :(得分:5)
这是一种使用uitable的hack,它在GUI中创建一个UI表组件。" uitable"是从现有表的元素构建的。以下GUI具有按钮,一旦您按下它,就会创建一个UI表并将其放置在指定位置的GUI内。然后你可以玩它。
function MakeTableGUI
clear
clc
close all
%// Create figure and uielements
handles.fig = figure('Position',[440 400 500 230]);
handles.DispButton = uicontrol('Style','Pushbutton','Position',[20 70 80 40],'String','Display table','Callback',@DispTableCallback);
%// Create table
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
handles.T = table(Age,Height,Weight,BloodPressure,'RowNames',LastName);
function DispTableCallback(~,~)
%// Place table in GUI
uitable(handles.fig,'Data',handles.T{:,:},'ColumnWidth',{50},'ColumnName',{'Age','Height','Weight','BloodPressure'},...
'RowName',LastName,'Position',[110 20 300 150]);
end
end
这是按下按钮后的样子:
如您所见,重要的是您明智地放置表格,使其不会出现在GUI的其他元素上。
希望有所帮助!