在matlab中使用popupmenu uitable

时间:2013-11-20 06:09:57

标签: matlab popupmenu matlab-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之外的popupmenu不同,我无法使用get(popup,“value”)。

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

1 个答案:

答案 0 :(得分: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

更全面的示例uitable application。