Uitable在MATLAB中的设置位置问题

问题描述 投票:0回答:1

我正在尝试在 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 matlab-figure matlab-uitable matlab-hg2
1个回答
1
投票

根据评论,将我上面的评论转化为答案。

要使示例代码正常运行,您需要 MATlAB R2014b 或更新版本。根据 MATLAB R2014b 的release notes图形句柄现在是对象而不是双打,使图形对象与 MATLAB 的其他对象保持一致。这样做的一个好处是用户现在能够利用点符号来寻址和设置其图形对象的属性。这是对旧版本的更改,在旧版本中,图形句柄存储为指向相关图形对象的数字 ID,要求用户使用

get
set
来访问和修改图形对象属性。

要解决您的问题,您只需要修改点符号用法以在适当的地方获取或设置。或者升级 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);
© www.soinside.com 2019 - 2024. All rights reserved.