在 matlab 中更改 uitable 的大小

Change size of uitable in matlab

我在 matlab GUI 中使用 uitable。在此 GUI 中,每次处理后 uitable 的行和列因此我无法使用 ui 的 Position 属性 table。当我绘制 table 时,一些区域仍然是空白的,它的位置也总是在 GUI 图形的左下角。图片如下:

我想从 table 中删除白色区域,即 table 根据行和列自动调整自身大小。

我该怎么做?

A possible way-around to handle this issue: uitable 行高和列宽与 table 的尺寸无关,因为 table 可以包含任意数量的 rows/cols。这就是 table 有滚动条的原因。因此,调整 table 的大小只会影响所谓的滚动条视口,而 不会 影响任何内部方面,例如行高或列宽。您可以捕获调整大小回调并根据新的 table 大小以编程方式修改行高和列宽。但是,我建议不要这样做,因为大多数用户都习惯了当前的行为,不仅在 Matlab 中,而且在大多数基于 GUI 的应用程序中。

另一种可能的解决方法是,如果您使用 'FontUnits'、'Normalized' 标准化您的单位,它可能会对您有所帮助。由于字体大小会改变,你的行宽和列宽也会改变,但当字体不需要扩展列宽时,列将停止调整大小。

下面的代码将达到目的。

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