关于在MATLAB中设置Uitable位置的问题



我正试图在matlab中创建一个uitable。考虑以下简单示例:

f = figure;
data = rand(3);
colnames = {'X-Data', 'Y-Data', 'Z-Data'};
t = uitable(f, 'Data', data, 'ColumnName', colnames, ...
                   'Position', [20 20 260 100]);

接下来,我尝试设置uitable的宽度和高度,以匹配封闭矩形的大小:

t.Position(3) = t.Extent(3);
t.Position(4) = t.Extent(4);

然而,我得到以下错误:

>> t.Position(3) = t.Extent(3);
t.Position(4) = t.Extent(4);
Attempt to reference field of non-structure array.

当我试图查看t是什么时,我得到:

>> t
t =
   2.1030e+03

我不知道这个结果意味着什么!我有点困惑,因为这是我第一次使用uitable,而且我对MATLAB也很陌生。

根据注释,将我上面的注释转换为答案。

要使示例代码正常工作,您需要MATlAB R2014b或更新版本。根据MATLAB R2014b的发行说明,图形句柄现在是对象,而不是双重对象,使图形对象与MATLAB的其他对象保持一致。这样做的一个好处是,用户现在可以利用点表示法来寻址和设置图形对象的属性。这与旧版本有所不同,在旧版本中,图形句柄存储为指向相关图形对象的数字ID,要求用户使用getset来访问和修改图形对象属性。

要解决您的问题,您只需要修改点符号的用法,即可在适当的地方获取或设置。或者升级MATLAB:)

例如,

t.Position(3) = t.Extent(3);
t.Position(4) = t.Extent(4);

变为:

tableextent = get(t,'Extent');
oldposition = get(t,'Position');
newposition = [oldposition(1) oldposition(2) tableextent(3) tableextent(4)];
set(t, 'Position', newposition);

最新更新