0

我创建了一个由四列组成的 uitable。

colu={{'Sweet' 'Beautiful' 'Caring'},'numeric', 'numeric','numeric'}
dat={1 2 3 []; 4 5 6 []; 7 8 9 []};
A=uitable('outerposition',[0 0 1 1],'ColumnFormat',colu,'Data',dat);

我现在想要做的是,当代码运行时,我在第一个单元格的弹出窗口中选择'Sweet',单元格(1,4)显示dat(1,1),或者当我选择' Beautiful' 在第一列的第二个单元格中,单元格 (2,4) 显示 dat(2,1)。与 uitable 外部的弹出菜单不同,我无法使用 get(popup,"value')。

我怎么可能做我想做的事?提前致谢!

4

1 回答 1

1

您必须使用 CellEditCallback 属性,这是一个在编辑任何单元格时触发的全局回调。您无法在单个单元格上设置回调。

一个可以帮助您入门的伪代码模板:

function cellEditCallback(hTable, editEvent)
    % get changed index
    changedIndex = editEvent.Indices;
    if changedIndex is a popup-cell:
        % check new value
        newValue = editEvent.NewData;
        % set data in appropriate cell to corresponding value
        ...

顺便说一句,示例中的 columnFormat 与数据不匹配。它将第 1 列指定为弹出列,而根据您的数据,它应该是第 4 列。我还必须更改[]''以使弹出工作和set('ColumnEditable', logical([0,0,0,1])).

参见例如

http://www.mathworks.de/products/matlab/examples.html?file=/products/demos/shipping/matlab/uitabledemo.html

以获得更全面的示例适用应用程序。

于 2013-11-20T08:18:33.053 回答