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 也很陌生。

任何帮助,将不胜感激。谢谢!

4

1 回答 1

1

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

要使示例代码正常运行,您需要 MATLAB R2014b 或更新版本。根据MA​​TLAB R2014b的发行说明,图形句柄现在是 objects 而不是 doubles,使图形对象与 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);
于 2014-11-06T13:22:37.750 回答