我在matlab GUI中使用uitable。在这个GUI中,每次处理后都可以使用行和列,因此我不能使用uitable的 Position 属性。当我画桌子时,一些区域保持空白,其位置也总是在GUI图的左下角。图片如下所示:
我想从表中删除白色区域,表格根据行和列自动调整大小。
我怎么能这样做?
答案 0 :(得分:3)
A possible way-around to handle this issue: 由于表格可以包含任意数量的行/列,因此行高和列宽与表的维度无关。这就是表格有滚动条的原因。因此,调整表的大小只会影响所谓的滚动条视口,而 NOT 会影响任何内部方面,例如行高或列宽。您可以捕获调整大小回调并以编程方式修改行高和列宽,具体取决于新的表大小。但是,我建议不要这样做,因为大多数用户习惯于当前行为,不仅仅是在Matlab中,而是在大多数基于GUI的应用程序中。
另一种可能的方法是,如果你使用'FontUnits','标准化'来规范你的单位,它可能对你有帮助。由于字体大小会改变,你的行和列宽也会改变,但是当字体不需要扩展列宽时,列会停止重新调整大小。
以下代码将用于此目的。
clear all;
clc;
%% Create a random dataset with any number of rows and columns
data = rand(10, 15);
%% Create a uitable
t = uitable('Data',data);
%% Set the position and size of UITable
% Position(1) = Distance from the inner left edge of the figure
% Position(2) = Distance from the inner bottom edge of the figure
% Position(3) = Distance between the right and left edges of rectangle containing the uitable
% Position(4) = Distance between the top and bottom edges of rectangle containing the uitable
% Extent(1) = Always zero
% Extent(2) = Always zero
% Extent(3) = Width of uitable
% Extent(4) = Height of uitable
t.Position = [350 350 t.Extent(3) t.Extent(4)];
%%End